├── sampledata
└── t.txt
├── Modify_jpcommon_label.txt
├── TIF.cs
├── vsq3.cs
└── Program.cs
/sampledata/t.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yoxxx/TI2VSQX/HEAD/sampledata/t.txt
--------------------------------------------------------------------------------
/Modify_jpcommon_label.txt:
--------------------------------------------------------------------------------
1 | TI2VSQXを動かす前提として、Open JTalkのjpcommon_label.cを修正し、出力ラベル情報にモーラ文字も出力させている。
2 | 同ソースコードの687行目以降を以下の通り修正している。
3 |
4 | /* for A: */
5 | if (i == 0 || i == label->size - 1 || short_pause_flag == 1)
6 | /* TI2VSQX処理用の修正:モーラ文字出力列追加*/
7 | /*sprintf(buff, "/A:xx+xx+xx"); */
8 | sprintf(buff, "/A:xx+xx+xx=");
9 | else {
10 | tmp1 = index_mora_in_accent_phrase(p->up);
11 | tmp2 =
12 | p->up->up->up->accent ==
13 | 0 ? count_mora_in_accent_phrase(p->up) : p->up->up->up->accent;
14 | /* TI2VSQX処理用の修正:モーラ文字出力列追加*/
15 | /*sprintf(buff, "/A:%d+%d+%d", limit(tmp1 - tmp2, -MAX_M, MAX_M), limit(tmp1, 1, MAX_M), */
16 | /* limit(count_mora_in_accent_phrase(p->up) - tmp1 + 1, 1, MAX_M));*/
17 | sprintf(buff, "/A:%d+%d+%d=%s", limit(tmp1 - tmp2, -MAX_M, MAX_M), limit(tmp1, 1, MAX_M),
18 | limit(count_mora_in_accent_phrase(p->up) - tmp1 + 1, 1, MAX_M),p->up->mora);
19 | }
20 | strcat(label->feature[i], buff);
21 |
--------------------------------------------------------------------------------
/TIF.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * TIF.cs
3 | * Copyright c 2018 yo_xxx
4 | *
5 | * This file is part of TI2VSQX.
6 | *
7 | * TI2VSQX is free software; you can redistribute it and/or
8 | * modify it under the terms of the BSD License.
9 | *
10 | * TI2VSQX is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 | */
14 | using System;
15 | using System.Collections.Generic;
16 | using System.Text;
17 |
18 | namespace TI2VSQX
19 | {
20 | ///
21 | /// トレース情報のテキスト解析情報([Text analysis result])のクラス
22 | ///
23 | public class TIF_TextAnalysis
24 | {
25 | ///
26 | /// 解析元文字列
27 | ///
28 | [System.Xml.Serialization.XmlElementAttribute("StrAnalysis")]
29 | public string StrAnalysis { get; set; } //解析元文字列
30 |
31 | ///
32 | /// 品詞
33 | ///
34 | [System.Xml.Serialization.XmlElementAttribute("POS")]
35 | public string POS { get; set; } //品詞
36 |
37 | ///
38 | /// 品詞分類1
39 | ///
40 | [System.Xml.Serialization.XmlElementAttribute("POS_group1")]
41 | public string POS_group1 { get; set; } //品詞分類1
42 |
43 | ///
44 | /// 品詞分類2
45 | ///
46 | [System.Xml.Serialization.XmlElementAttribute("POS_group2")]
47 | public string POS_group2 { get; set; } //品詞分類2
48 |
49 | ///
50 | /// 品詞分類3
51 | ///
52 | [System.Xml.Serialization.XmlElementAttribute("POS_group3")]
53 | public string POS_group3 { get; set; } //品詞分類3
54 |
55 | ///
56 | /// 活用種類
57 | ///
58 | [System.Xml.Serialization.XmlElementAttribute("CType")]
59 | public string CType { get; set; } //活用種類
60 |
61 | ///
62 | /// 活用形
63 | ///
64 | [System.Xml.Serialization.XmlElementAttribute("CForm")]
65 | public string CForm { get; set; } //活用形
66 |
67 | ///
68 | /// 解析後文字列(辞書になければ*、あれば辞書の単語)
69 | ///
70 | [System.Xml.Serialization.XmlElementAttribute("StrOriginal")]
71 | public string StrOriginal { get; set; } //解析後文字列(辞書になければ*、あれば辞書の単語)
72 |
73 | ///
74 | /// 解析後文字列の読み
75 | ///
76 | [System.Xml.Serialization.XmlElementAttribute("StrRead")]
77 | public string StrRead { get; set; } //解析後文字列の読み
78 |
79 | ///
80 | /// 解析後文字列の読みを発声に合わせて直したもの
81 | ///
82 | [System.Xml.Serialization.XmlElementAttribute("StrPhoneme")]
83 | public string StrPhoneme { get; set; } //解析後文字列の読みを発声に合わせて直したもの
84 |
85 | ///
86 | /// アクセント区分
87 | ///
88 | [System.Xml.Serialization.XmlElementAttribute("AccID")]
89 | public string AccID { get; set; } //アクセント区分
90 |
91 | ///
92 | /// モーラ数
93 | ///
94 | [System.Xml.Serialization.XmlElementAttribute("MoraSize")]
95 | public string MoraSize { get; set; } //モーラ数
96 |
97 | ///
98 | /// 連結規則
99 | ///
100 | [System.Xml.Serialization.XmlElementAttribute("ChainRule")]
101 | public string ChainRule { get; set; } //連結規則
102 |
103 | ///
104 | /// 連結区分
105 | ///
106 | [System.Xml.Serialization.XmlElementAttribute("ChainFlag")]
107 | public string ChainFlag { get; set; } //連結区分
108 |
109 | //コンストラクタ
110 | ///
111 | /// トレース情報のテキスト解析情報([Text analysis result])のクラスのコンストラクタ
112 | ///
113 | /// テキスト解析情報の行
114 | /// トレース情報のテキスト解析情報クラス
115 | public TIF_TextAnalysis(string Line)
116 | {
117 | string[] item = Line.Split(',');
118 | StrAnalysis = item[00];
119 | POS = item[01];
120 | POS_group1 = item[02];
121 | POS_group2 = item[03];
122 | POS_group3 = item[04];
123 | CType = item[05];
124 | CForm = item[06];
125 | StrOriginal = item[07];
126 | StrRead = item[08];
127 | StrPhoneme = item[09];
128 | string[] Num = item[10].Split('/');
129 | AccID = Num[00];
130 | MoraSize = Num[01];
131 | ChainRule = item[11];
132 | ChainFlag = item[12];
133 | }
134 |
135 | ///
136 | /// シリアライズできるようにパラメータを持たないコンストラクタを用意する
137 | ///
138 | public TIF_TextAnalysis() { }
139 |
140 | }
141 |
142 | ///
143 | /// トレース情報の出力ラベル情報([Output label])のクラス
144 | ///
145 | public class TIF
146 | {
147 | ///
148 | /// t1:音素開始位置(0.1マイクロ秒単位)
149 | ///
150 | [System.Xml.Serialization.XmlElementAttribute("PhonemeFrom")]
151 | public int PhonemeFrom { get; set; } //t1:音素開始位置(0.1マイクロ秒単位)
152 |
153 | ///
154 | /// t2:音素終了位置(0.1マイクロ秒単位)
155 | ///
156 | [System.Xml.Serialization.XmlElementAttribute("PhonemeTo")]
157 | public int PhonemeTo { get; set; } //t2:音素終了位置(0.1マイクロ秒単位)
158 |
159 | ///
160 | /// p1:音素(2つ前)
161 | ///
162 | [System.Xml.Serialization.XmlElementAttribute("PhonemeBeforePrev")]
163 | public string PhonemeBeforePrev { get; set; } //p1:音素(2つ前)
164 |
165 | ///
166 | /// p2:音素(1つ前)
167 | ///
168 | [System.Xml.Serialization.XmlElementAttribute("PhonemePrev")]
169 | public string PhonemePrev { get; set; } //p2:音素(1つ前)
170 |
171 | ///
172 | /// p3:音素(現在)
173 | ///
174 | [System.Xml.Serialization.XmlElementAttribute("PhonemeCurrent")]
175 | public string PhonemeCurrent { get; set; } //p3:音素(現在)
176 |
177 | ///
178 | /// p4:音素(次)
179 | ///
180 | [System.Xml.Serialization.XmlElementAttribute("PhonemeNext")]
181 | public string PhonemeNext { get; set; } //p4:音素(次)
182 |
183 | ///
184 | /// p5:音素(次の次)
185 | ///
186 | [System.Xml.Serialization.XmlElementAttribute("PhonemeAfterNext")]
187 | public string PhonemeAfterNext { get; set; } //p5:音素(次の次)
188 |
189 | ///
190 | /// a1:アクセント核までのモーラ数(モーラがアクセント核の時ゼロ)
191 | ///
192 | [System.Xml.Serialization.XmlElementAttribute("MoraDiffAccent")]
193 | public string MoraDiffAccent { get; set; } //a1:アクセント核までのモーラ数(モーラがアクセント核の時ゼロ)
194 |
195 | ///
196 | /// a2:現在のモーラのアクセント句内での位置(昇順)
197 | ///
198 | [System.Xml.Serialization.XmlElementAttribute("MoraPosForward")]
199 | public string MoraPosForward { get; set; } //a2:現在のモーラのアクセント句内での位置(昇順)
200 |
201 | ///
202 | /// a3:現在のモーラのアクセント句内での位置(降順)
203 | ///
204 | [System.Xml.Serialization.XmlElementAttribute("MoraPosBackward")]
205 | public string MoraPosBackward { get; set; } //a3:現在のモーラのアクセント句内での位置(降順)
206 |
207 | ///
208 | /// a4:モーラ文字(現在) ※Open JTalkのjpcommon_label.cを修正して出力している
209 | ///
210 | [System.Xml.Serialization.XmlElementAttribute("MoraCurrent")]
211 | public string MoraCurrent { get; set; } //a4:モーラ文字(現在) ※Open JTalkのjpcommon_label.cを修正して出力している
212 |
213 | ///
214 | /// b1:品詞区分 (前)
215 | ///
216 | [System.Xml.Serialization.XmlElementAttribute("POSIDPrev")]
217 | public string POSIDPrev { get; set; } //b1:品詞区分 (前)
218 |
219 | ///
220 | /// b1:品詞名 (前)
221 | ///
222 | [System.Xml.Serialization.XmlElementAttribute("POSNamePrev")]
223 | public string POSNamePrev { get; set; } //b1:品詞名 (前)
224 |
225 | ///
226 | /// b2:活用形区分 (前)
227 | ///
228 | [System.Xml.Serialization.XmlElementAttribute("CFormIDPrev")]
229 | public string CFormIDPrev { get; set; } //b2:活用形区分 (前)
230 |
231 | ///
232 | /// b2:活用形名 (前)
233 | ///
234 | [System.Xml.Serialization.XmlElementAttribute("CFormNamePrev")]
235 | public string CFormNamePrev { get; set; } //b2:活用形名 (前)
236 |
237 | ///
238 | /// b3:活用種類区分(前)
239 | ///
240 | [System.Xml.Serialization.XmlElementAttribute("CTypeIDPrev")]
241 | public string CTypeIDPrev { get; set; } //b3:活用種類区分(前)
242 |
243 | ///
244 | /// b3:活用種類名 (前)
245 | ///
246 | [System.Xml.Serialization.XmlElementAttribute("CTypeNamePrev")]
247 | public string CTypeNamePrev { get; set; } //b3:活用種類名 (前)
248 |
249 | ///
250 | /// c1:品詞区分 (現在)
251 | ///
252 | [System.Xml.Serialization.XmlElementAttribute("POSIDCurrent")]
253 | public string POSIDCurrent { get; set; } //c1:品詞区分 (現在)
254 |
255 | ///
256 | /// c1:品詞名 (現在)
257 | ///
258 | [System.Xml.Serialization.XmlElementAttribute("POSNameCurrent")]
259 | public string POSNameCurrent { get; set; } //c1:品詞名 (現在)
260 |
261 | ///
262 | /// c2:活用形区分 (現在)
263 | ///
264 | [System.Xml.Serialization.XmlElementAttribute("CFormIDCurrent")]
265 | public string CFormIDCurrent { get; set; } //c2:活用形区分 (現在)
266 |
267 | ///
268 | /// c2:活用形名 (現在)
269 | ///
270 | [System.Xml.Serialization.XmlElementAttribute("CFormNameCurrent")]
271 | public string CFormNameCurrent { get; set; } //c2:活用形名 (現在)
272 |
273 | ///
274 | /// c3:活用種類区分(現在)
275 | ///
276 | [System.Xml.Serialization.XmlElementAttribute("CTypeIDCurrent")]
277 | public string CTypeIDCurrent { get; set; } //c3:活用種類区分(現在)
278 |
279 | ///
280 | /// c3:活用種類名 (現在)
281 | ///
282 | [System.Xml.Serialization.XmlElementAttribute("CTypeNameCurrent")]
283 | public string CTypeNameCurrent { get; set; } //c3:活用種類名 (現在)
284 |
285 | ///
286 | /// d1:品詞区分 (次)
287 | ///
288 | [System.Xml.Serialization.XmlElementAttribute("POSIDNext")]
289 | public string POSIDNext { get; set; } //d1:品詞区分 (次)
290 |
291 | ///
292 | /// d1:品詞名 (次)
293 | ///
294 | [System.Xml.Serialization.XmlElementAttribute("POSNameNext")]
295 | public string POSNameNext { get; set; } //d1:品詞名 (次)
296 |
297 | ///
298 | /// d2:活用形区分 (次)
299 | ///
300 | [System.Xml.Serialization.XmlElementAttribute("CFormIDNext")]
301 | public string CFormIDNext { get; set; } //d2:活用形区分 (次)
302 |
303 | ///
304 | /// d2:活用形名 (次)
305 | ///
306 | [System.Xml.Serialization.XmlElementAttribute("CFormNameNext")]
307 | public string CFormNameNext { get; set; } //d2:活用形名 (次)
308 |
309 | ///
310 | /// d3:活用種類区分(次)
311 | ///
312 | [System.Xml.Serialization.XmlElementAttribute("CTypeIDNext")]
313 | public string CTypeIDNext { get; set; } //d3:活用種類区分(次)
314 |
315 | ///
316 | /// d3:活用種類名 (次)
317 | ///
318 | [System.Xml.Serialization.XmlElementAttribute("CTypeNameNext")]
319 | public string CTypeNameNext { get; set; } //d3:活用種類名 (次)
320 |
321 | ///
322 | /// e1:モーラ数 (前のアクセント句)
323 | ///
324 | [System.Xml.Serialization.XmlElementAttribute("MoraNumPrevAcc")]
325 | public string MoraNumPrevAcc { get; set; } //e1:モーラ数 (前のアクセント句)
326 |
327 | ///
328 | /// e2:アクセント種類(前のアクセント句)
329 | ///
330 | [System.Xml.Serialization.XmlElementAttribute("AccTypePrevAcc")]
331 | public string AccTypePrevAcc { get; set; } //e2:アクセント種類(前のアクセント句)
332 |
333 | ///
334 | /// e3:疑問文か (前のアクセント句)
335 | ///
336 | [System.Xml.Serialization.XmlElementAttribute("IsInterrogativePrevAcc")]
337 | public string IsInterrogativePrevAcc { get; set; } //e3:疑問文か (前のアクセント句)
338 |
339 | ///
340 | /// e4:未定義項目 (前のアクセント句)
341 | ///
342 | [System.Xml.Serialization.XmlElementAttribute("UndefinedPrevAcc")]
343 | public string UndefinedPrevAcc { get; set; } //e4:未定義項目 (前のアクセント句)
344 |
345 | ///
346 | /// e5:ポーズ有無 (前のアクセント句と現在のアクセント句の間)
347 | ///
348 | [System.Xml.Serialization.XmlElementAttribute("IsExistPausePrevAcc")]
349 | public string IsExistPausePrevAcc { get; set; } //e5:ポーズ有無 (前のアクセント句と現在のアクセント句の間)
350 |
351 | ///
352 | /// f1:モーラ数 (現在のアクセント句)
353 | ///
354 | [System.Xml.Serialization.XmlElementAttribute("MoraNumCurrentAcc")]
355 | public string MoraNumCurrentAcc { get; set; } //f1:モーラ数 (現在のアクセント句)
356 |
357 | ///
358 | /// f2:アクセント種類(現在のアクセント句)
359 | ///
360 | [System.Xml.Serialization.XmlElementAttribute("AccTypeCurrentAcc")]
361 | public string AccTypeCurrentAcc { get; set; } //f2:アクセント種類(現在のアクセント句)
362 |
363 | ///
364 | /// f3:疑問文か (現在のアクセント句)
365 | ///
366 | [System.Xml.Serialization.XmlElementAttribute("IsInterrogativeCurrentAcc")]
367 | public string IsInterrogativeCurrentAcc { get; set; } //f3:疑問文か (現在のアクセント句)
368 |
369 | ///
370 | /// f4:未定義項目 (現在のアクセント句)
371 | ///
372 | [System.Xml.Serialization.XmlElementAttribute("UndefinedCurrentAcc")]
373 | public string UndefinedCurrentAcc { get; set; } //f4:未定義項目 (現在のアクセント句)
374 |
375 | ///
376 | /// f5:現在のアクセント句の呼気段落内での位置(昇順)
377 | ///
378 | [System.Xml.Serialization.XmlElementAttribute("AccPosInBreathForward")]
379 | public string AccPosInBreathForward { get; set; } //f5:現在のアクセント句の呼気段落内での位置(昇順)
380 |
381 | ///
382 | /// f6:現在のアクセント句の呼気段落内での位置(降順)
383 | ///
384 | [System.Xml.Serialization.XmlElementAttribute("AccPosInBreathBackward")]
385 | public string AccPosInBreathBackward { get; set; } //f6:現在のアクセント句の呼気段落内での位置(降順)
386 |
387 | ///
388 | /// f7:アクセント句内先頭モーラの呼気段落内での位置(昇順)
389 | ///
390 | [System.Xml.Serialization.XmlElementAttribute("FirstAccMoraPosInBreathForward")]
391 | public string FirstAccMoraPosInBreathForward { get; set; } //f7:アクセント句内先頭モーラの呼気段落内での位置(昇順)
392 |
393 | ///
394 | /// f8:アクセント句内先頭モーラの呼気段落内での位置(降順)
395 | ///
396 | [System.Xml.Serialization.XmlElementAttribute("FirstAccMoraPosInBreathBackward")]
397 | public string FirstAccMoraPosInBreathBackward { get; set; } //f8:アクセント句内先頭モーラの呼気段落内での位置(降順)
398 |
399 | ///
400 | /// g1:モーラ数 (次のアクセント句)
401 | ///
402 | [System.Xml.Serialization.XmlElementAttribute("MoraNumNextAcc")]
403 | public string MoraNumNextAcc { get; set; } //g1:モーラ数 (次のアクセント句)
404 |
405 | ///
406 | /// g2:アクセント種類(次のアクセント句)
407 | ///
408 | [System.Xml.Serialization.XmlElementAttribute("AccTypeNextAcc")]
409 | public string AccTypeNextAcc { get; set; } //g2:アクセント種類(次のアクセント句)
410 |
411 | ///
412 | /// g3:疑問文か (次のアクセント句)
413 | ///
414 | [System.Xml.Serialization.XmlElementAttribute("IsInterrogativeNextAcc")]
415 | public string IsInterrogativeNextAcc { get; set; } //g3:疑問文か (次のアクセント句)
416 |
417 | ///
418 | /// g4:未定義項目 (次のアクセント句)
419 | ///
420 | [System.Xml.Serialization.XmlElementAttribute("UndefinedNextAcc")]
421 | public string UndefinedNextAcc { get; set; } //g4:未定義項目 (次のアクセント句)
422 |
423 | ///
424 | /// g5:ポーズ有無 (現在のアクセント句と次のアクセント句の間)
425 | ///
426 | [System.Xml.Serialization.XmlElementAttribute("IsExistPauseNextAcc")]
427 | public string IsExistPauseNextAcc { get; set; } //g5:ポーズ有無 (現在のアクセント句と次のアクセント句の間)
428 |
429 | ///
430 | /// h1:アクセント句数(前の呼気段落)
431 | ///
432 | [System.Xml.Serialization.XmlElementAttribute("AccNumPrevBreath")]
433 | public string AccNumPrevBreath { get; set; } //h1:アクセント句数(前の呼気段落)
434 |
435 | ///
436 | /// h2:モーラ数 (前の呼気段落)
437 | ///
438 | [System.Xml.Serialization.XmlElementAttribute("MoraNumPrevBreath")]
439 | public string MoraNumPrevBreath { get; set; } //h2:モーラ数 (前の呼気段落)
440 |
441 | ///
442 | /// i1:アクセント句数(現在の呼気段落)
443 | ///
444 | [System.Xml.Serialization.XmlElementAttribute("AccNumCurrentBreath")]
445 | public string AccNumCurrentBreath { get; set; } //i1:アクセント句数(現在の呼気段落)
446 |
447 | ///
448 | /// i2:モーラ数 (現在の呼気段落)
449 | ///
450 | [System.Xml.Serialization.XmlElementAttribute("MoraNumCurrentBreath")]
451 | public string MoraNumCurrentBreath { get; set; } //i2:モーラ数 (現在の呼気段落)
452 |
453 | ///
454 | /// i3:現在の呼気段落の発声内での位置(昇順)
455 | ///
456 | [System.Xml.Serialization.XmlElementAttribute("BreathPosInUtteranceForward")]
457 | public string BreathPosInUtteranceForward { get; set; } //i3:現在の呼気段落の発声内での位置(昇順)
458 |
459 | ///
460 | /// i4:現在の呼気段落の発声内での位置(降順)
461 | ///
462 | [System.Xml.Serialization.XmlElementAttribute("BreathPosInUtteranceBackward")]
463 | public string BreathPosInUtteranceBackward { get; set; } //i4:現在の呼気段落の発声内での位置(降順)
464 |
465 | ///
466 | /// i5:呼気段落内先頭アクセント句の発声内での位置(昇順)
467 | ///
468 | [System.Xml.Serialization.XmlElementAttribute("FirstAccPosInUtteranceForward")]
469 | public string FirstAccPosInUtteranceForward { get; set; } //i5:呼気段落内先頭アクセント句の発声内での位置(昇順)
470 |
471 | ///
472 | /// i6:呼気段落内先頭アクセント句の発声内での位置(降順)
473 | ///
474 | [System.Xml.Serialization.XmlElementAttribute("FirstAccPosInUtteranceBackward")]
475 | public string FirstAccPosInUtteranceBackward { get; set; } //i6:呼気段落内先頭アクセント句の発声内での位置(降順)
476 |
477 | ///
478 | /// i7:呼気段落内先頭モーラの発声内での位置(昇順)
479 | ///
480 | [System.Xml.Serialization.XmlElementAttribute("FirstBreathMoraPosInUtteranceForward")]
481 | public string FirstBreathMoraPosInUtteranceForward { get; set; } //i7:呼気段落内先頭モーラの発声内での位置(昇順)
482 |
483 | ///
484 | /// i8:呼気段落内先頭モーラの発声内での位置(降順)
485 | ///
486 | [System.Xml.Serialization.XmlElementAttribute("FirstBreathMoraPosInUtteranceBackward")]
487 | public string FirstBreathMoraPosInUtteranceBackward { get; set; } //i8:呼気段落内先頭モーラの発声内での位置(降順)
488 |
489 | ///
490 | /// j1:アクセント句数(次の呼気段落)
491 | ///
492 | [System.Xml.Serialization.XmlElementAttribute("AccNumNextBreath")]
493 | public string AccNumNextBreath { get; set; } //j1:アクセント句数(次の呼気段落)
494 |
495 | ///
496 | /// j2:モーラ数 (次の呼気段落)
497 | ///
498 | [System.Xml.Serialization.XmlElementAttribute("MoraNumNextBreath")]
499 | public string MoraNumNextBreath { get; set; } //j2:モーラ数 (次の呼気段落)
500 |
501 | ///
502 | /// k1:呼気段落数 (現在の発声内)
503 | ///
504 | [System.Xml.Serialization.XmlElementAttribute("BreathNumInUtterance")]
505 | public string BreathNumInUtterance { get; set; } //k1:呼気段落数 (現在の発声内)
506 |
507 | ///
508 | /// k2:アクセント句数(現在の発声内)
509 | ///
510 | [System.Xml.Serialization.XmlElementAttribute("AccNumInUtterance")]
511 | public string AccNumInUtterance { get; set; } //k2:アクセント句数(現在の発声内)
512 |
513 | ///
514 | /// k3:モーラ数 (現在の発声内)
515 | ///
516 | [System.Xml.Serialization.XmlElementAttribute("MoraNumInUtterance")]
517 | public string MoraNumInUtterance { get; set; } //k3:モーラ数 (現在の発声内)
518 |
519 | ///
520 | /// 品詞区分とその名称
521 | ///
522 | public struct POSIDName
523 | {
524 | public string POSID;
525 | public string POSName;
526 | };
527 |
528 | ///
529 | /// 品詞区分とその名称のテーブル
530 | ///
531 | static public POSIDName[] POSIDNameArray = new POSIDName[]
532 | {
533 | new POSIDName { POSID = "xx", POSName = "その他" },
534 | new POSIDName { POSID = "09", POSName = "感動詞" },
535 | new POSIDName { POSID = "19", POSName = "形状詞" },
536 | new POSIDName { POSID = "01", POSName = "形容詞" },
537 | new POSIDName { POSID = "23", POSName = "助詞-その他" },
538 | new POSIDName { POSID = "13", POSName = "助詞-格助詞" },
539 | new POSIDName { POSID = "24", POSName = "助詞-係助詞" },
540 | new POSIDName { POSID = "14", POSName = "助詞-終助詞" },
541 | new POSIDName { POSID = "12", POSName = "助詞-接続助詞" },
542 | new POSIDName { POSID = "11", POSName = "助詞-副助詞" },
543 | new POSIDName { POSID = "10", POSName = "助動詞" },
544 | new POSIDName { POSID = "08", POSName = "接続詞" },
545 | new POSIDName { POSID = "16", POSName = "接頭辞" },
546 | new POSIDName { POSID = "15", POSName = "接尾辞" },
547 | new POSIDName { POSID = "04", POSName = "代名詞" },
548 | new POSIDName { POSID = "20", POSName = "動詞" },
549 | new POSIDName { POSID = "17", POSName = "動詞-非自立" },
550 | new POSIDName { POSID = "06", POSName = "副詞" },
551 | new POSIDName { POSID = "03", POSName = "名詞-サ変接続" },
552 | new POSIDName { POSID = "18", POSName = "名詞-固有名詞" },
553 | new POSIDName { POSID = "05", POSName = "名詞-数詞" },
554 | new POSIDName { POSID = "22", POSName = "名詞-非自立" },
555 | new POSIDName { POSID = "02", POSName = "名詞-普通名詞" },
556 | new POSIDName { POSID = "07", POSName = "連体詞" },
557 | new POSIDName { POSID = "25", POSName = "フィラー" }
558 | };
559 |
560 | ///
561 | /// 品詞区分の名称を求める
562 | ///
563 | static public string GetPOSName(string POSIDValue)
564 | {
565 | for (int i = 0; i < POSIDNameArray.Length; i++)
566 | {
567 | if (POSIDValue == POSIDNameArray[i].POSID)
568 | {
569 | return POSIDNameArray[i].POSName;
570 | }
571 | };
572 | //見つからなければ空文字列を返す
573 | return "";
574 | }
575 |
576 | ///
577 | /// 活用形区分とその名称
578 | ///
579 | public struct CFormIDName
580 | {
581 | public string CFormID;
582 | public string CFormName;
583 | };
584 |
585 | ///
586 | /// 活用形区分とその名称のテーブル
587 | ///
588 | static public CFormIDName[] CFormIDNameArray = new CFormIDName[]
589 | {
590 | new CFormIDName { CFormID = "xx", CFormName = "*" },
591 | new CFormIDName { CFormID = "6", CFormName = "その他" },
592 | new CFormIDName { CFormID = "4", CFormName = "仮定形" },
593 | new CFormIDName { CFormID = "2", CFormName = "基本形" },
594 | new CFormIDName { CFormID = "0", CFormName = "未然形" },
595 | new CFormIDName { CFormID = "5", CFormName = "命令形" },
596 | new CFormIDName { CFormID = "3", CFormName = "連体形" },
597 | new CFormIDName { CFormID = "1", CFormName = "連用形" }
598 | };
599 |
600 | ///
601 | /// 活用形区分の名称を求める
602 | ///
603 | static public string GetCFormName(string CFormIDValue)
604 | {
605 | for (int i = 0; i < CFormIDNameArray.Length; i++)
606 | {
607 | if (CFormIDValue == CFormIDNameArray[i].CFormID)
608 | {
609 | return CFormIDNameArray[i].CFormName;
610 | }
611 | };
612 | //見つからなければ空文字列を返す
613 | return "";
614 | }
615 |
616 |
617 | ///
618 | /// 活用種類区分とその名称の構造体
619 | ///
620 | public struct CTypeIDName
621 | {
622 | public string CTypeID;
623 | public string CTypeName;
624 | };
625 |
626 | ///
627 | /// 活用種類区分とその名称のテーブル
628 | ///
629 | static public CTypeIDName[] CTypeIDNameArray = new CTypeIDName[]
630 | {
631 | new CTypeIDName { CTypeID = "xx", CTypeName = "*" },
632 | new CTypeIDName { CTypeID = "5", CTypeName = "カ行変格" },
633 | new CTypeIDName { CTypeID = "4", CTypeName = "サ行変格" },
634 | new CTypeIDName { CTypeID = "6", CTypeName = "ラ行変格・四段・二段・不変化・文語助動詞" },
635 | new CTypeIDName { CTypeID = "3", CTypeName = "一段" },
636 | new CTypeIDName { CTypeID = "7", CTypeName = "形容詞" },
637 | new CTypeIDName { CTypeID = "1", CTypeName = "五段" },
638 | new CTypeIDName { CTypeID = "7", CTypeName = "助動詞" },
639 | };
640 |
641 | ///
642 | /// 活用種類区分の名称を求める
643 | ///
644 | static public string GetCTypeName(string CTypeIDValue)
645 | {
646 | for (int i = 0; i < CTypeIDNameArray.Length; i++)
647 | {
648 | if (CTypeIDValue == CTypeIDNameArray[i].CTypeID)
649 | {
650 | return CTypeIDNameArray[i].CTypeName;
651 | }
652 | };
653 | //見つからなければ空文字列を返す
654 | return "";
655 | }
656 |
657 | ///
658 | /// トレース情報のコンストラクタ
659 | ///
660 | public TIF(string Line)
661 | {
662 | string[] block = Line.Split('/', ' ');
663 | this.PhonemeFrom = Int32.Parse(block[0]);
664 | this.PhonemeTo = Int32.Parse(block[1]);
665 | string[] item = block[2].Split('^', '-', '+', '=');
666 | this.PhonemeBeforePrev = item[0];
667 | this.PhonemePrev = item[1];
668 | this.PhonemeCurrent = item[2];
669 | this.PhonemeNext = item[3];
670 | this.PhonemeAfterNext = item[4];
671 | item = block[3].Split(':', '+', '=');
672 | this.MoraDiffAccent = item[1];
673 | this.MoraPosForward = item[2];
674 | this.MoraPosBackward = item[3];
675 | this.MoraCurrent = item[4]; //もともとのトレース情報にはないモーラ文字を取得している
676 | item = block[4].Split(':', '-', '_');
677 | this.POSIDPrev = item[1];
678 | this.POSNamePrev = GetPOSName(POSIDPrev);
679 | this.CFormIDPrev = item[2];
680 | this.CFormNamePrev = GetCFormName(CFormIDPrev);
681 | this.CTypeIDPrev = item[3];
682 | this.CTypeNamePrev = GetCTypeName(CTypeIDPrev);
683 | item = block[5].Split(':', '_', '+');
684 | this.POSIDCurrent = item[1];
685 | this.POSNameCurrent = GetPOSName(POSIDCurrent);
686 | this.CFormIDCurrent = item[2];
687 | this.CFormNameCurrent = GetCFormName(CFormIDCurrent);
688 | this.CTypeIDCurrent = item[3];
689 | this.CTypeNameCurrent = GetCTypeName(CTypeIDCurrent);
690 | item = block[6].Split(':', '+', '_');
691 | this.POSIDNext = item[1];
692 | this.POSNameNext = GetPOSName(POSIDNext);
693 | this.CFormIDNext = item[2];
694 | this.CFormNameNext = GetCFormName(CFormIDNext);
695 | this.CTypeIDNext = item[3];
696 | this.CTypeNameNext = GetCTypeName(CTypeIDNext);
697 | item = block[7].Split(':', '_', '!', '-');
698 | this.MoraNumPrevAcc = item[1];
699 | this.AccTypePrevAcc = item[2];
700 | this.IsInterrogativePrevAcc = item[3];
701 | this.UndefinedPrevAcc = item[4];
702 | this.IsExistPausePrevAcc = item[5];
703 | item = block[8].Split(':', '_', '#', '@', '|');
704 | this.MoraNumCurrentAcc = item[1];
705 | this.AccTypeCurrentAcc = item[2];
706 | this.IsInterrogativeCurrentAcc = item[3];
707 | this.UndefinedCurrentAcc = item[4];
708 | this.AccPosInBreathForward = item[5];
709 | this.AccPosInBreathBackward = item[6];
710 | this.FirstAccMoraPosInBreathForward = item[7];
711 | this.FirstAccMoraPosInBreathBackward = item[8];
712 | item = block[9].Split(':', '_', '%');
713 | this.MoraNumNextAcc = item[1];
714 | this.AccTypeNextAcc = item[2];
715 | this.IsInterrogativeNextAcc = item[3];
716 | this.UndefinedNextAcc = item[4];
717 | this.IsExistPauseNextAcc = item[5];
718 | item = block[10].Split(':', '_');
719 | this.AccNumPrevBreath = item[1];
720 | this.MoraNumPrevBreath = item[2];
721 | item = block[11].Split(':', '-', '@', '+', '&', '|');
722 | this.AccNumCurrentBreath = item[1];
723 | this.MoraNumCurrentBreath = item[2];
724 | this.BreathPosInUtteranceForward = item[3];
725 | this.BreathPosInUtteranceBackward = item[4];
726 | this.FirstAccPosInUtteranceForward = item[5];
727 | this.FirstAccPosInUtteranceBackward = item[6];
728 | this.FirstBreathMoraPosInUtteranceForward = item[7];
729 | this.FirstBreathMoraPosInUtteranceBackward = item[8];
730 | item = block[12].Split(':', '_');
731 | this.AccNumNextBreath = item[1];
732 | this.MoraNumNextBreath = item[2];
733 | item = block[13].Split(':', '+', '-');
734 | this.BreathNumInUtterance = item[1];
735 | this.AccNumInUtterance = item[2];
736 | this.MoraNumInUtterance = item[3];
737 | }
738 |
739 | ///
740 | /// シリアライズできるようにパラメータを持たないコンストラクタを用意する
741 | ///
742 | public TIF() { }
743 |
744 | }
745 |
746 | }
747 |
--------------------------------------------------------------------------------
/vsq3.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * vsq3.cs
3 | * Copyright c 2018 yo_xxx
4 | *
5 | * This file is part of TI2VSQX.
6 | *
7 | * TI2VSQX is free software; you can redistribute it and/or
8 | * modify it under the terms of the BSD License.
9 | *
10 | * TI2VSQX is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 | */
14 | using System;
15 | using System.Collections.Generic;
16 | using System.Text;
17 | using System.Xml;
18 |
19 | namespace TI2VSQX
20 | {
21 | //
22 | // This source code was auto-generated by xsd, Version=4.6.1055.0.
23 | //
24 |
25 |
26 | ///
27 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
28 | [System.SerializableAttribute()]
29 | [System.Diagnostics.DebuggerStepThroughAttribute()]
30 | [System.ComponentModel.DesignerCategoryAttribute("code")]
31 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
32 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
33 | public partial class vsq3
34 | {
35 |
36 | private string venderField;
37 |
38 | private string versionField;
39 |
40 | private vVoice[] vVoiceTableField;
41 |
42 | private mixer mixerField;
43 |
44 | private masterTrack masterTrackField;
45 |
46 | private vsTrack[] vsTrackField;
47 |
48 | private wavPart[] seTrackField;
49 |
50 | private wavPart[] karaokeTrackField;
51 |
52 | private aux[] auxField;
53 |
54 | /// CDATAセクションに変更
55 | public XmlCDataSection vender
56 | {
57 | get
58 | {
59 | return new XmlDocument().CreateCDataSection(this.venderField);
60 | }
61 | set
62 | {
63 | this.venderField = value.Value;
64 | }
65 | }
66 | /// CDATAセクションに変更
67 | public XmlCDataSection version
68 | {
69 | get
70 | {
71 | return new XmlDocument().CreateCDataSection(this.versionField);
72 | }
73 | set
74 | {
75 | this.versionField = value.Value;
76 | }
77 | }
78 |
79 | ///
80 | [System.Xml.Serialization.XmlArrayItemAttribute("vVoice", IsNullable = false)]
81 | public vVoice[] vVoiceTable
82 | {
83 | get
84 | {
85 | return this.vVoiceTableField;
86 | }
87 | set
88 | {
89 | this.vVoiceTableField = value;
90 | }
91 | }
92 |
93 | ///
94 | public mixer mixer
95 | {
96 | get
97 | {
98 | return this.mixerField;
99 | }
100 | set
101 | {
102 | this.mixerField = value;
103 | }
104 | }
105 |
106 | ///
107 | public masterTrack masterTrack
108 | {
109 | get
110 | {
111 | return this.masterTrackField;
112 | }
113 | set
114 | {
115 | this.masterTrackField = value;
116 | }
117 | }
118 |
119 | ///
120 | [System.Xml.Serialization.XmlElementAttribute("vsTrack")]
121 | public vsTrack[] vsTrack
122 | {
123 | get
124 | {
125 | return this.vsTrackField;
126 | }
127 | set
128 | {
129 | this.vsTrackField = value;
130 | }
131 | }
132 |
133 | ///
134 | [System.Xml.Serialization.XmlArrayItemAttribute("wavPart", IsNullable = false)]
135 | public wavPart[] seTrack
136 | {
137 | get
138 | {
139 | return this.seTrackField;
140 | }
141 | set
142 | {
143 | this.seTrackField = value;
144 | }
145 | }
146 |
147 | ///
148 | [System.Xml.Serialization.XmlArrayItemAttribute("wavPart", IsNullable = false)]
149 | public wavPart[] karaokeTrack
150 | {
151 | get
152 | {
153 | return this.karaokeTrackField;
154 | }
155 | set
156 | {
157 | this.karaokeTrackField = value;
158 | }
159 | }
160 |
161 | ///
162 | [System.Xml.Serialization.XmlElementAttribute("aux")]
163 | public aux[] aux
164 | {
165 | get
166 | {
167 | return this.auxField;
168 | }
169 | set
170 | {
171 | this.auxField = value;
172 | }
173 | }
174 | }
175 |
176 | ///
177 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
178 | [System.SerializableAttribute()]
179 | [System.Diagnostics.DebuggerStepThroughAttribute()]
180 | [System.ComponentModel.DesignerCategoryAttribute("code")]
181 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
182 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
183 | public partial class vVoice
184 | {
185 |
186 | private byte vBSField;
187 |
188 | private byte vPCField;
189 |
190 | private string compIDField;
191 |
192 | private string vVoiceNameField;
193 |
194 | private vVoiceParam vVoiceParamField;
195 |
196 | ///
197 | public byte vBS
198 | {
199 | get
200 | {
201 | return this.vBSField;
202 | }
203 | set
204 | {
205 | this.vBSField = value;
206 | }
207 | }
208 |
209 | ///
210 | public byte vPC
211 | {
212 | get
213 | {
214 | return this.vPCField;
215 | }
216 | set
217 | {
218 | this.vPCField = value;
219 | }
220 | }
221 |
222 | /// CDATAセクションに変更
223 | public XmlCDataSection compID
224 | {
225 | get
226 | {
227 | return new XmlDocument().CreateCDataSection(this.compIDField);
228 | }
229 | set
230 | {
231 | this.compIDField = value.Value;
232 | }
233 | }
234 |
235 | /// CDATAセクションに変更
236 | public XmlCDataSection vVoiceName
237 | {
238 | get
239 | {
240 | return new XmlDocument().CreateCDataSection(this.vVoiceNameField);
241 | }
242 | set
243 | {
244 | this.vVoiceNameField = value.Value;
245 | }
246 | }
247 |
248 | ///
249 | public vVoiceParam vVoiceParam
250 | {
251 | get
252 | {
253 | return this.vVoiceParamField;
254 | }
255 | set
256 | {
257 | this.vVoiceParamField = value;
258 | }
259 | }
260 | }
261 |
262 | ///
263 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
264 | [System.SerializableAttribute()]
265 | [System.Diagnostics.DebuggerStepThroughAttribute()]
266 | [System.ComponentModel.DesignerCategoryAttribute("code")]
267 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
268 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
269 | public partial class vVoiceParam
270 | {
271 |
272 | private sbyte breField;
273 |
274 | private sbyte briField;
275 |
276 | private sbyte cleField;
277 |
278 | private sbyte genField;
279 |
280 | private sbyte opeField;
281 |
282 | ///
283 | public sbyte bre
284 | {
285 | get
286 | {
287 | return this.breField;
288 | }
289 | set
290 | {
291 | this.breField = value;
292 | }
293 | }
294 |
295 | ///
296 | public sbyte bri
297 | {
298 | get
299 | {
300 | return this.briField;
301 | }
302 | set
303 | {
304 | this.briField = value;
305 | }
306 | }
307 |
308 | ///
309 | public sbyte cle
310 | {
311 | get
312 | {
313 | return this.cleField;
314 | }
315 | set
316 | {
317 | this.cleField = value;
318 | }
319 | }
320 |
321 | ///
322 | public sbyte gen
323 | {
324 | get
325 | {
326 | return this.genField;
327 | }
328 | set
329 | {
330 | this.genField = value;
331 | }
332 | }
333 |
334 | ///
335 | public sbyte ope
336 | {
337 | get
338 | {
339 | return this.opeField;
340 | }
341 | set
342 | {
343 | this.opeField = value;
344 | }
345 | }
346 | }
347 |
348 | ///
349 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
350 | [System.SerializableAttribute()]
351 | [System.Diagnostics.DebuggerStepThroughAttribute()]
352 | [System.ComponentModel.DesignerCategoryAttribute("code")]
353 | [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
354 | public partial class typePhonemes
355 | {
356 |
357 | private byte lockField;
358 |
359 | private bool lockFieldSpecified;
360 |
361 | private string valueField;
362 |
363 | ///
364 | [System.Xml.Serialization.XmlAttributeAttribute()]
365 | public byte @lock
366 | {
367 | get
368 | {
369 | return this.lockField;
370 | }
371 | set
372 | {
373 | this.lockField = value;
374 | }
375 | }
376 |
377 | ///
378 | [System.Xml.Serialization.XmlIgnoreAttribute()]
379 | public bool lockSpecified
380 | {
381 | get
382 | {
383 | return this.lockFieldSpecified;
384 | }
385 | set
386 | {
387 | this.lockFieldSpecified = value;
388 | }
389 | }
390 |
391 | // データの設定・取得用
392 | ///
393 | [System.Xml.Serialization.XmlTextAttribute()]
394 | public string Value
395 | {
396 | get
397 | {
398 | return this.valueField;
399 | }
400 | set
401 | {
402 | this.valueField = value;
403 | }
404 |
405 | }
406 | }
407 |
408 | ///
409 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
410 | [System.SerializableAttribute()]
411 | [System.Diagnostics.DebuggerStepThroughAttribute()]
412 | [System.ComponentModel.DesignerCategoryAttribute("code")]
413 | [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
414 | public partial class typeParamAttr
415 | {
416 |
417 | private string idField;
418 |
419 | private int valueField;
420 |
421 | ///
422 | [System.Xml.Serialization.XmlAttributeAttribute()]
423 | public string id
424 | {
425 | get
426 | {
427 | return this.idField;
428 | }
429 | set
430 | {
431 | this.idField = value;
432 | }
433 | }
434 |
435 | ///
436 | [System.Xml.Serialization.XmlTextAttribute()]
437 | public int Value
438 | {
439 | get
440 | {
441 | return this.valueField;
442 | }
443 | set
444 | {
445 | this.valueField = value;
446 | }
447 | }
448 | }
449 |
450 | ///
451 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
452 | [System.SerializableAttribute()]
453 | [System.Diagnostics.DebuggerStepThroughAttribute()]
454 | [System.ComponentModel.DesignerCategoryAttribute("code")]
455 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
456 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
457 | public partial class mixer
458 | {
459 |
460 | private masterUnit masterUnitField;
461 |
462 | private vsUnit[] vsUnitField;
463 |
464 | private seUnit seUnitField;
465 |
466 | private karaokeUnit karaokeUnitField;
467 |
468 | ///
469 | public masterUnit masterUnit
470 | {
471 | get
472 | {
473 | return this.masterUnitField;
474 | }
475 | set
476 | {
477 | this.masterUnitField = value;
478 | }
479 | }
480 |
481 | ///
482 | [System.Xml.Serialization.XmlElementAttribute("vsUnit")]
483 | public vsUnit[] vsUnit
484 | {
485 | get
486 | {
487 | return this.vsUnitField;
488 | }
489 | set
490 | {
491 | this.vsUnitField = value;
492 | }
493 | }
494 |
495 | ///
496 | public seUnit seUnit
497 | {
498 | get
499 | {
500 | return this.seUnitField;
501 | }
502 | set
503 | {
504 | this.seUnitField = value;
505 | }
506 | }
507 |
508 | ///
509 | public karaokeUnit karaokeUnit
510 | {
511 | get
512 | {
513 | return this.karaokeUnitField;
514 | }
515 | set
516 | {
517 | this.karaokeUnitField = value;
518 | }
519 | }
520 | }
521 |
522 | ///
523 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
524 | [System.SerializableAttribute()]
525 | [System.Diagnostics.DebuggerStepThroughAttribute()]
526 | [System.ComponentModel.DesignerCategoryAttribute("code")]
527 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
528 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
529 | public partial class masterUnit
530 | {
531 |
532 | private short outDevField;
533 |
534 | private vstPlugin[] vstPluginField;
535 |
536 | private vstPluginSR vstPluginSRField;
537 |
538 | private int retLevelField;
539 |
540 | private int volField;
541 |
542 | ///
543 | public short outDev
544 | {
545 | get
546 | {
547 | return this.outDevField;
548 | }
549 | set
550 | {
551 | this.outDevField = value;
552 | }
553 | }
554 |
555 | ///
556 | [System.Xml.Serialization.XmlElementAttribute("vstPlugin")]
557 | public vstPlugin[] vstPlugin
558 | {
559 | get
560 | {
561 | return this.vstPluginField;
562 | }
563 | set
564 | {
565 | this.vstPluginField = value;
566 | }
567 | }
568 |
569 | ///
570 | public vstPluginSR vstPluginSR
571 | {
572 | get
573 | {
574 | return this.vstPluginSRField;
575 | }
576 | set
577 | {
578 | this.vstPluginSRField = value;
579 | }
580 | }
581 |
582 | ///
583 | public int retLevel
584 | {
585 | get
586 | {
587 | return this.retLevelField;
588 | }
589 | set
590 | {
591 | this.retLevelField = value;
592 | }
593 | }
594 |
595 | ///
596 | public int vol
597 | {
598 | get
599 | {
600 | return this.volField;
601 | }
602 | set
603 | {
604 | this.volField = value;
605 | }
606 | }
607 | }
608 |
609 | ///
610 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
611 | [System.SerializableAttribute()]
612 | [System.Diagnostics.DebuggerStepThroughAttribute()]
613 | [System.ComponentModel.DesignerCategoryAttribute("code")]
614 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
615 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
616 | public partial class vstPlugin
617 | {
618 |
619 | private string vstPluginIDField;
620 |
621 | private string vstPluginNameField;
622 |
623 | private byte vstSDKVersionField;
624 |
625 | private int vstParamNumField;
626 |
627 | private int[] vstParamValField;
628 |
629 | private int vstPresetNoField;
630 |
631 | private bool vstPresetNoFieldSpecified;
632 |
633 | private byte enableField;
634 |
635 | private byte bypassField;
636 |
637 | ///
638 | public string vstPluginID
639 | {
640 | get
641 | {
642 | return this.vstPluginIDField;
643 | }
644 | set
645 | {
646 | this.vstPluginIDField = value;
647 | }
648 | }
649 |
650 | ///
651 | public string vstPluginName
652 | {
653 | get
654 | {
655 | return this.vstPluginNameField;
656 | }
657 | set
658 | {
659 | this.vstPluginNameField = value;
660 | }
661 | }
662 |
663 | ///
664 | public byte vstSDKVersion
665 | {
666 | get
667 | {
668 | return this.vstSDKVersionField;
669 | }
670 | set
671 | {
672 | this.vstSDKVersionField = value;
673 | }
674 | }
675 |
676 | ///
677 | public int vstParamNum
678 | {
679 | get
680 | {
681 | return this.vstParamNumField;
682 | }
683 | set
684 | {
685 | this.vstParamNumField = value;
686 | }
687 | }
688 |
689 | ///
690 | [System.Xml.Serialization.XmlArrayItemAttribute("val", IsNullable = false)]
691 | public int[] vstParamVal
692 | {
693 | get
694 | {
695 | return this.vstParamValField;
696 | }
697 | set
698 | {
699 | this.vstParamValField = value;
700 | }
701 | }
702 |
703 | ///
704 | public int vstPresetNo
705 | {
706 | get
707 | {
708 | return this.vstPresetNoField;
709 | }
710 | set
711 | {
712 | this.vstPresetNoField = value;
713 | }
714 | }
715 |
716 | ///
717 | [System.Xml.Serialization.XmlIgnoreAttribute()]
718 | public bool vstPresetNoSpecified
719 | {
720 | get
721 | {
722 | return this.vstPresetNoFieldSpecified;
723 | }
724 | set
725 | {
726 | this.vstPresetNoFieldSpecified = value;
727 | }
728 | }
729 |
730 | ///
731 | public byte enable
732 | {
733 | get
734 | {
735 | return this.enableField;
736 | }
737 | set
738 | {
739 | this.enableField = value;
740 | }
741 | }
742 |
743 | ///
744 | public byte bypass
745 | {
746 | get
747 | {
748 | return this.bypassField;
749 | }
750 | set
751 | {
752 | this.bypassField = value;
753 | }
754 | }
755 | }
756 |
757 | ///
758 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
759 | [System.SerializableAttribute()]
760 | [System.Diagnostics.DebuggerStepThroughAttribute()]
761 | [System.ComponentModel.DesignerCategoryAttribute("code")]
762 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
763 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
764 | public partial class vstPluginSR
765 | {
766 |
767 | private string vstPluginIDField;
768 |
769 | private string vstPluginNameField;
770 |
771 | private byte vstSDKVersionField;
772 |
773 | private int vstParamNumField;
774 |
775 | private int[] vstParamValField;
776 |
777 | private int vstPresetNoField;
778 |
779 | private bool vstPresetNoFieldSpecified;
780 |
781 | private byte enableField;
782 |
783 | private byte bypassField;
784 |
785 | ///
786 | public string vstPluginID
787 | {
788 | get
789 | {
790 | return this.vstPluginIDField;
791 | }
792 | set
793 | {
794 | this.vstPluginIDField = value;
795 | }
796 | }
797 |
798 | ///
799 | public string vstPluginName
800 | {
801 | get
802 | {
803 | return this.vstPluginNameField;
804 | }
805 | set
806 | {
807 | this.vstPluginNameField = value;
808 | }
809 | }
810 |
811 | ///
812 | public byte vstSDKVersion
813 | {
814 | get
815 | {
816 | return this.vstSDKVersionField;
817 | }
818 | set
819 | {
820 | this.vstSDKVersionField = value;
821 | }
822 | }
823 |
824 | ///
825 | public int vstParamNum
826 | {
827 | get
828 | {
829 | return this.vstParamNumField;
830 | }
831 | set
832 | {
833 | this.vstParamNumField = value;
834 | }
835 | }
836 |
837 | ///
838 | [System.Xml.Serialization.XmlArrayItemAttribute("val", IsNullable = false)]
839 | public int[] vstParamVal
840 | {
841 | get
842 | {
843 | return this.vstParamValField;
844 | }
845 | set
846 | {
847 | this.vstParamValField = value;
848 | }
849 | }
850 |
851 | ///
852 | public int vstPresetNo
853 | {
854 | get
855 | {
856 | return this.vstPresetNoField;
857 | }
858 | set
859 | {
860 | this.vstPresetNoField = value;
861 | }
862 | }
863 |
864 | ///
865 | [System.Xml.Serialization.XmlIgnoreAttribute()]
866 | public bool vstPresetNoSpecified
867 | {
868 | get
869 | {
870 | return this.vstPresetNoFieldSpecified;
871 | }
872 | set
873 | {
874 | this.vstPresetNoFieldSpecified = value;
875 | }
876 | }
877 |
878 | ///
879 | public byte enable
880 | {
881 | get
882 | {
883 | return this.enableField;
884 | }
885 | set
886 | {
887 | this.enableField = value;
888 | }
889 | }
890 |
891 | ///
892 | public byte bypass
893 | {
894 | get
895 | {
896 | return this.bypassField;
897 | }
898 | set
899 | {
900 | this.bypassField = value;
901 | }
902 | }
903 | }
904 |
905 | ///
906 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
907 | [System.SerializableAttribute()]
908 | [System.Diagnostics.DebuggerStepThroughAttribute()]
909 | [System.ComponentModel.DesignerCategoryAttribute("code")]
910 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
911 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
912 | public partial class vsUnit
913 | {
914 |
915 | private byte vsTrackNoField;
916 |
917 | private int inGainField;
918 |
919 | private vstPlugin[] vstPluginField;
920 |
921 | private int sendLevelField;
922 |
923 | private byte sendEnableField;
924 |
925 | private byte muteField;
926 |
927 | private byte soloField;
928 |
929 | private int panField;
930 |
931 | private int volField;
932 |
933 | ///
934 | public byte vsTrackNo
935 | {
936 | get
937 | {
938 | return this.vsTrackNoField;
939 | }
940 | set
941 | {
942 | this.vsTrackNoField = value;
943 | }
944 | }
945 |
946 | ///
947 | public int inGain
948 | {
949 | get
950 | {
951 | return this.inGainField;
952 | }
953 | set
954 | {
955 | this.inGainField = value;
956 | }
957 | }
958 |
959 | ///
960 | [System.Xml.Serialization.XmlElementAttribute("vstPlugin")]
961 | public vstPlugin[] vstPlugin
962 | {
963 | get
964 | {
965 | return this.vstPluginField;
966 | }
967 | set
968 | {
969 | this.vstPluginField = value;
970 | }
971 | }
972 |
973 | ///
974 | public int sendLevel
975 | {
976 | get
977 | {
978 | return this.sendLevelField;
979 | }
980 | set
981 | {
982 | this.sendLevelField = value;
983 | }
984 | }
985 |
986 | ///
987 | public byte sendEnable
988 | {
989 | get
990 | {
991 | return this.sendEnableField;
992 | }
993 | set
994 | {
995 | this.sendEnableField = value;
996 | }
997 | }
998 |
999 | ///
1000 | public byte mute
1001 | {
1002 | get
1003 | {
1004 | return this.muteField;
1005 | }
1006 | set
1007 | {
1008 | this.muteField = value;
1009 | }
1010 | }
1011 |
1012 | ///
1013 | public byte solo
1014 | {
1015 | get
1016 | {
1017 | return this.soloField;
1018 | }
1019 | set
1020 | {
1021 | this.soloField = value;
1022 | }
1023 | }
1024 |
1025 | ///
1026 | public int pan
1027 | {
1028 | get
1029 | {
1030 | return this.panField;
1031 | }
1032 | set
1033 | {
1034 | this.panField = value;
1035 | }
1036 | }
1037 |
1038 | ///
1039 | public int vol
1040 | {
1041 | get
1042 | {
1043 | return this.volField;
1044 | }
1045 | set
1046 | {
1047 | this.volField = value;
1048 | }
1049 | }
1050 | }
1051 |
1052 | ///
1053 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1054 | [System.SerializableAttribute()]
1055 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1056 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1057 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1058 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1059 | public partial class seUnit
1060 | {
1061 |
1062 | private int inGainField;
1063 |
1064 | private vstPlugin[] vstPluginField;
1065 |
1066 | private int sendLevelField;
1067 |
1068 | private byte sendEnableField;
1069 |
1070 | private byte muteField;
1071 |
1072 | private byte soloField;
1073 |
1074 | private int panField;
1075 |
1076 | private int volField;
1077 |
1078 | ///
1079 | public int inGain
1080 | {
1081 | get
1082 | {
1083 | return this.inGainField;
1084 | }
1085 | set
1086 | {
1087 | this.inGainField = value;
1088 | }
1089 | }
1090 |
1091 | ///
1092 | [System.Xml.Serialization.XmlElementAttribute("vstPlugin")]
1093 | public vstPlugin[] vstPlugin
1094 | {
1095 | get
1096 | {
1097 | return this.vstPluginField;
1098 | }
1099 | set
1100 | {
1101 | this.vstPluginField = value;
1102 | }
1103 | }
1104 |
1105 | ///
1106 | public int sendLevel
1107 | {
1108 | get
1109 | {
1110 | return this.sendLevelField;
1111 | }
1112 | set
1113 | {
1114 | this.sendLevelField = value;
1115 | }
1116 | }
1117 |
1118 | ///
1119 | public byte sendEnable
1120 | {
1121 | get
1122 | {
1123 | return this.sendEnableField;
1124 | }
1125 | set
1126 | {
1127 | this.sendEnableField = value;
1128 | }
1129 | }
1130 |
1131 | ///
1132 | public byte mute
1133 | {
1134 | get
1135 | {
1136 | return this.muteField;
1137 | }
1138 | set
1139 | {
1140 | this.muteField = value;
1141 | }
1142 | }
1143 |
1144 | ///
1145 | public byte solo
1146 | {
1147 | get
1148 | {
1149 | return this.soloField;
1150 | }
1151 | set
1152 | {
1153 | this.soloField = value;
1154 | }
1155 | }
1156 |
1157 | ///
1158 | public int pan
1159 | {
1160 | get
1161 | {
1162 | return this.panField;
1163 | }
1164 | set
1165 | {
1166 | this.panField = value;
1167 | }
1168 | }
1169 |
1170 | ///
1171 | public int vol
1172 | {
1173 | get
1174 | {
1175 | return this.volField;
1176 | }
1177 | set
1178 | {
1179 | this.volField = value;
1180 | }
1181 | }
1182 | }
1183 |
1184 | ///
1185 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1186 | [System.SerializableAttribute()]
1187 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1188 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1189 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1190 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1191 | public partial class karaokeUnit
1192 | {
1193 |
1194 | private int inGainField;
1195 |
1196 | private vstPlugin[] vstPluginField;
1197 |
1198 | private byte muteField;
1199 |
1200 | private byte soloField;
1201 |
1202 | private int volField;
1203 |
1204 | ///
1205 | public int inGain
1206 | {
1207 | get
1208 | {
1209 | return this.inGainField;
1210 | }
1211 | set
1212 | {
1213 | this.inGainField = value;
1214 | }
1215 | }
1216 |
1217 | ///
1218 | [System.Xml.Serialization.XmlElementAttribute("vstPlugin")]
1219 | public vstPlugin[] vstPlugin
1220 | {
1221 | get
1222 | {
1223 | return this.vstPluginField;
1224 | }
1225 | set
1226 | {
1227 | this.vstPluginField = value;
1228 | }
1229 | }
1230 |
1231 | ///
1232 | public byte mute
1233 | {
1234 | get
1235 | {
1236 | return this.muteField;
1237 | }
1238 | set
1239 | {
1240 | this.muteField = value;
1241 | }
1242 | }
1243 |
1244 | ///
1245 | public byte solo
1246 | {
1247 | get
1248 | {
1249 | return this.soloField;
1250 | }
1251 | set
1252 | {
1253 | this.soloField = value;
1254 | }
1255 | }
1256 |
1257 | ///
1258 | public int vol
1259 | {
1260 | get
1261 | {
1262 | return this.volField;
1263 | }
1264 | set
1265 | {
1266 | this.volField = value;
1267 | }
1268 | }
1269 | }
1270 |
1271 | ///
1272 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1273 | [System.SerializableAttribute()]
1274 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1275 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1276 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1277 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1278 | public partial class masterTrack
1279 | {
1280 |
1281 | private string seqNameField;
1282 |
1283 | private string commentField;
1284 |
1285 | private ushort resolutionField;
1286 |
1287 | private byte preMeasureField;
1288 |
1289 | private timeSig[] timeSigField;
1290 |
1291 | private tempo[] tempoField;
1292 |
1293 | /// CDATAセクションに変更
1294 | public XmlCDataSection seqName
1295 | {
1296 | get
1297 | {
1298 | return new XmlDocument().CreateCDataSection(this.seqNameField);
1299 | }
1300 | set
1301 | {
1302 | this.seqNameField = value.Value;
1303 | }
1304 | }
1305 |
1306 | /// CDATAセクションに変更
1307 | public XmlCDataSection comment
1308 | {
1309 | get
1310 | {
1311 | return new XmlDocument().CreateCDataSection(this.commentField);
1312 | }
1313 | set
1314 | {
1315 | this.commentField = value.Value;
1316 | }
1317 | }
1318 |
1319 | ///
1320 | public ushort resolution
1321 | {
1322 | get
1323 | {
1324 | return this.resolutionField;
1325 | }
1326 | set
1327 | {
1328 | this.resolutionField = value;
1329 | }
1330 | }
1331 |
1332 | ///
1333 | public byte preMeasure
1334 | {
1335 | get
1336 | {
1337 | return this.preMeasureField;
1338 | }
1339 | set
1340 | {
1341 | this.preMeasureField = value;
1342 | }
1343 | }
1344 |
1345 | ///
1346 | [System.Xml.Serialization.XmlElementAttribute("timeSig")]
1347 | public timeSig[] timeSig
1348 | {
1349 | get
1350 | {
1351 | return this.timeSigField;
1352 | }
1353 | set
1354 | {
1355 | this.timeSigField = value;
1356 | }
1357 | }
1358 |
1359 | ///
1360 | [System.Xml.Serialization.XmlElementAttribute("tempo")]
1361 | public tempo[] tempo
1362 | {
1363 | get
1364 | {
1365 | return this.tempoField;
1366 | }
1367 | set
1368 | {
1369 | this.tempoField = value;
1370 | }
1371 | }
1372 | }
1373 |
1374 | ///
1375 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1376 | [System.SerializableAttribute()]
1377 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1378 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1379 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1380 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1381 | public partial class timeSig
1382 | {
1383 |
1384 | private int posMesField;
1385 |
1386 | private byte numeField;
1387 |
1388 | private byte denomiField;
1389 |
1390 | ///
1391 | public int posMes
1392 | {
1393 | get
1394 | {
1395 | return this.posMesField;
1396 | }
1397 | set
1398 | {
1399 | this.posMesField = value;
1400 | }
1401 | }
1402 |
1403 | ///
1404 | public byte nume
1405 | {
1406 | get
1407 | {
1408 | return this.numeField;
1409 | }
1410 | set
1411 | {
1412 | this.numeField = value;
1413 | }
1414 | }
1415 |
1416 | ///
1417 | public byte denomi
1418 | {
1419 | get
1420 | {
1421 | return this.denomiField;
1422 | }
1423 | set
1424 | {
1425 | this.denomiField = value;
1426 | }
1427 | }
1428 | }
1429 |
1430 | ///
1431 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1432 | [System.SerializableAttribute()]
1433 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1434 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1435 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1436 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1437 | public partial class tempo
1438 | {
1439 |
1440 | private int posTickField;
1441 |
1442 | private int bpmField;
1443 |
1444 | ///
1445 | public int posTick
1446 | {
1447 | get
1448 | {
1449 | return this.posTickField;
1450 | }
1451 | set
1452 | {
1453 | this.posTickField = value;
1454 | }
1455 | }
1456 |
1457 | ///
1458 | public int bpm
1459 | {
1460 | get
1461 | {
1462 | return this.bpmField;
1463 | }
1464 | set
1465 | {
1466 | this.bpmField = value;
1467 | }
1468 | }
1469 | }
1470 |
1471 | ///
1472 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1473 | [System.SerializableAttribute()]
1474 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1475 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1476 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1477 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1478 | public partial class vsTrack
1479 | {
1480 |
1481 | private byte vsTrackNoField;
1482 |
1483 | private string trackNameField;
1484 |
1485 | private string commentField;
1486 |
1487 | private object[] itemsField;
1488 |
1489 | ///
1490 | public byte vsTrackNo
1491 | {
1492 | get
1493 | {
1494 | return this.vsTrackNoField;
1495 | }
1496 | set
1497 | {
1498 | this.vsTrackNoField = value;
1499 | }
1500 | }
1501 |
1502 | /// CDATAセクションに変更
1503 | public XmlCDataSection trackName
1504 | {
1505 | get
1506 | {
1507 | return new XmlDocument().CreateCDataSection(this.trackNameField);
1508 | }
1509 | set
1510 | {
1511 | this.trackNameField = value.Value;
1512 | }
1513 | }
1514 |
1515 | /// CDATAセクションに変更
1516 | public XmlCDataSection comment
1517 | {
1518 | get
1519 | {
1520 | return new XmlDocument().CreateCDataSection(this.commentField);
1521 | }
1522 | set
1523 | {
1524 | this.commentField = value.Value;
1525 | }
1526 | }
1527 |
1528 | ///
1529 | [System.Xml.Serialization.XmlElementAttribute("musicalPart", typeof(musicalPart))]
1530 | [System.Xml.Serialization.XmlElementAttribute("prosodyPart", typeof(prosodyPart))]
1531 | public object[] Items
1532 | {
1533 | get
1534 | {
1535 | return this.itemsField;
1536 | }
1537 | set
1538 | {
1539 | this.itemsField = value;
1540 | }
1541 | }
1542 | }
1543 |
1544 | ///
1545 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1546 | [System.SerializableAttribute()]
1547 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1548 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1549 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1550 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1551 | public partial class musicalPart
1552 | {
1553 |
1554 | private int posTickField;
1555 |
1556 | private int playTimeField;
1557 |
1558 | private string partNameField;
1559 |
1560 | private string commentField;
1561 |
1562 | private stylePlugin stylePluginField;
1563 |
1564 | private typeParamAttr[] partStyleField;
1565 |
1566 | private phraseStyle[] phraseStyleField;
1567 |
1568 | private singer[] singerField;
1569 |
1570 | private mCtrl[] mCtrlField;
1571 |
1572 | private sCtrl[] sCtrlField;
1573 |
1574 | private note[] noteField;
1575 |
1576 | ///
1577 | public int posTick
1578 | {
1579 | get
1580 | {
1581 | return this.posTickField;
1582 | }
1583 | set
1584 | {
1585 | this.posTickField = value;
1586 | }
1587 | }
1588 |
1589 | ///
1590 | public int playTime
1591 | {
1592 | get
1593 | {
1594 | return this.playTimeField;
1595 | }
1596 | set
1597 | {
1598 | this.playTimeField = value;
1599 | }
1600 | }
1601 |
1602 | /// CDATAセクションに変更
1603 | public XmlCDataSection partName
1604 | {
1605 | get
1606 | {
1607 | return new XmlDocument().CreateCDataSection(this.partNameField);
1608 | }
1609 | set
1610 | {
1611 | this.partNameField = value.Value;
1612 | }
1613 | }
1614 |
1615 | /// CDATAセクションに変更
1616 | public XmlCDataSection comment
1617 | {
1618 | get
1619 | {
1620 | return new XmlDocument().CreateCDataSection(this.commentField);
1621 | }
1622 | set
1623 | {
1624 | this.commentField = value.Value;
1625 | }
1626 | }
1627 |
1628 | ///
1629 | public stylePlugin stylePlugin
1630 | {
1631 | get
1632 | {
1633 | return this.stylePluginField;
1634 | }
1635 | set
1636 | {
1637 | this.stylePluginField = value;
1638 | }
1639 | }
1640 |
1641 | ///
1642 | [System.Xml.Serialization.XmlArrayItemAttribute("attr", IsNullable = false)]
1643 | public typeParamAttr[] partStyle
1644 | {
1645 | get
1646 | {
1647 | return this.partStyleField;
1648 | }
1649 | set
1650 | {
1651 | this.partStyleField = value;
1652 | }
1653 | }
1654 |
1655 | ///
1656 | [System.Xml.Serialization.XmlElementAttribute("phraseStyle")]
1657 | public phraseStyle[] phraseStyle
1658 | {
1659 | get
1660 | {
1661 | return this.phraseStyleField;
1662 | }
1663 | set
1664 | {
1665 | this.phraseStyleField = value;
1666 | }
1667 | }
1668 |
1669 | ///
1670 | [System.Xml.Serialization.XmlElementAttribute("singer")]
1671 | public singer[] singer
1672 | {
1673 | get
1674 | {
1675 | return this.singerField;
1676 | }
1677 | set
1678 | {
1679 | this.singerField = value;
1680 | }
1681 | }
1682 |
1683 | ///
1684 | [System.Xml.Serialization.XmlElementAttribute("mCtrl")]
1685 | public mCtrl[] mCtrl
1686 | {
1687 | get
1688 | {
1689 | return this.mCtrlField;
1690 | }
1691 | set
1692 | {
1693 | this.mCtrlField = value;
1694 | }
1695 | }
1696 |
1697 | ///
1698 | [System.Xml.Serialization.XmlElementAttribute("sCtrl")]
1699 | public sCtrl[] sCtrl
1700 | {
1701 | get
1702 | {
1703 | return this.sCtrlField;
1704 | }
1705 | set
1706 | {
1707 | this.sCtrlField = value;
1708 | }
1709 | }
1710 |
1711 | ///
1712 | [System.Xml.Serialization.XmlElementAttribute("note")]
1713 | public note[] note
1714 | {
1715 | get
1716 | {
1717 | return this.noteField;
1718 | }
1719 | set
1720 | {
1721 | this.noteField = value;
1722 | }
1723 | }
1724 | }
1725 |
1726 | ///
1727 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1728 | [System.SerializableAttribute()]
1729 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1730 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1731 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1732 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1733 | public partial class stylePlugin
1734 | {
1735 |
1736 | private string stylePluginIDField;
1737 |
1738 | private string stylePluginNameField;
1739 |
1740 | private string versionField;
1741 |
1742 | /// CDATAセクションに変更
1743 | public XmlCDataSection stylePluginID
1744 | {
1745 | get
1746 | {
1747 | return new XmlDocument().CreateCDataSection(this.stylePluginIDField);
1748 | }
1749 | set
1750 | {
1751 | this.stylePluginIDField = value.Value;
1752 | }
1753 | }
1754 |
1755 | /// CDATAセクションに変更
1756 | public XmlCDataSection stylePluginName
1757 | {
1758 | get
1759 | {
1760 | return new XmlDocument().CreateCDataSection(this.stylePluginNameField);
1761 | }
1762 | set
1763 | {
1764 | this.stylePluginNameField = value.Value;
1765 | }
1766 | }
1767 |
1768 | /// CDATAセクションに変更
1769 | public XmlCDataSection version
1770 | {
1771 | get
1772 | {
1773 | return new XmlDocument().CreateCDataSection(this.versionField);
1774 | }
1775 | set
1776 | {
1777 | this.versionField = value.Value;
1778 | }
1779 | }
1780 | }
1781 |
1782 | ///
1783 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1784 | [System.SerializableAttribute()]
1785 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1786 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1787 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1788 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1789 | public partial class phraseStyle
1790 | {
1791 |
1792 | private int posTickField;
1793 |
1794 | private typeParamAttr[] attrField;
1795 |
1796 | ///
1797 | public int posTick
1798 | {
1799 | get
1800 | {
1801 | return this.posTickField;
1802 | }
1803 | set
1804 | {
1805 | this.posTickField = value;
1806 | }
1807 | }
1808 |
1809 | ///
1810 | [System.Xml.Serialization.XmlElementAttribute("attr")]
1811 | public typeParamAttr[] attr
1812 | {
1813 | get
1814 | {
1815 | return this.attrField;
1816 | }
1817 | set
1818 | {
1819 | this.attrField = value;
1820 | }
1821 | }
1822 | }
1823 |
1824 | ///
1825 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1826 | [System.SerializableAttribute()]
1827 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1828 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1829 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1830 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1831 | public partial class singer
1832 | {
1833 |
1834 | private int posTickField;
1835 |
1836 | private byte vBSField;
1837 |
1838 | private byte vPCField;
1839 |
1840 | ///
1841 | public int posTick
1842 | {
1843 | get
1844 | {
1845 | return this.posTickField;
1846 | }
1847 | set
1848 | {
1849 | this.posTickField = value;
1850 | }
1851 | }
1852 |
1853 | ///
1854 | public byte vBS
1855 | {
1856 | get
1857 | {
1858 | return this.vBSField;
1859 | }
1860 | set
1861 | {
1862 | this.vBSField = value;
1863 | }
1864 | }
1865 |
1866 | ///
1867 | public byte vPC
1868 | {
1869 | get
1870 | {
1871 | return this.vPCField;
1872 | }
1873 | set
1874 | {
1875 | this.vPCField = value;
1876 | }
1877 | }
1878 | }
1879 |
1880 | ///
1881 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1882 | [System.SerializableAttribute()]
1883 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1884 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1885 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1886 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1887 | public partial class mCtrl
1888 | {
1889 |
1890 | private int posTickField;
1891 |
1892 | private typeParamAttr attrField;
1893 |
1894 | ///
1895 | public int posTick
1896 | {
1897 | get
1898 | {
1899 | return this.posTickField;
1900 | }
1901 | set
1902 | {
1903 | this.posTickField = value;
1904 | }
1905 | }
1906 |
1907 | ///
1908 | public typeParamAttr attr
1909 | {
1910 | get
1911 | {
1912 | return this.attrField;
1913 | }
1914 | set
1915 | {
1916 | this.attrField = value;
1917 | }
1918 | }
1919 | }
1920 |
1921 | ///
1922 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1923 | [System.SerializableAttribute()]
1924 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1925 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1926 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1927 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1928 | public partial class sCtrl
1929 | {
1930 |
1931 | private int posTickField;
1932 |
1933 | private typeParamAttr attrField;
1934 |
1935 | ///
1936 | public int posTick
1937 | {
1938 | get
1939 | {
1940 | return this.posTickField;
1941 | }
1942 | set
1943 | {
1944 | this.posTickField = value;
1945 | }
1946 | }
1947 |
1948 | ///
1949 | public typeParamAttr attr
1950 | {
1951 | get
1952 | {
1953 | return this.attrField;
1954 | }
1955 | set
1956 | {
1957 | this.attrField = value;
1958 | }
1959 | }
1960 | }
1961 |
1962 | ///
1963 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
1964 | [System.SerializableAttribute()]
1965 | [System.Diagnostics.DebuggerStepThroughAttribute()]
1966 | [System.ComponentModel.DesignerCategoryAttribute("code")]
1967 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
1968 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
1969 | public partial class note
1970 | {
1971 |
1972 | private int posTickField;
1973 |
1974 | private int durTickField;
1975 |
1976 | private byte noteNumField;
1977 |
1978 | private byte velocityField;
1979 |
1980 | private string lyricField;
1981 |
1982 | private typePhonemes phnmsField;
1983 |
1984 | private noteStyle noteStyleField;
1985 |
1986 | ///
1987 | public int posTick
1988 | {
1989 | get
1990 | {
1991 | return this.posTickField;
1992 | }
1993 | set
1994 | {
1995 | this.posTickField = value;
1996 | }
1997 | }
1998 |
1999 | ///
2000 | public int durTick
2001 | {
2002 | get
2003 | {
2004 | return this.durTickField;
2005 | }
2006 | set
2007 | {
2008 | this.durTickField = value;
2009 | }
2010 | }
2011 |
2012 | ///
2013 | public byte noteNum
2014 | {
2015 | get
2016 | {
2017 | return this.noteNumField;
2018 | }
2019 | set
2020 | {
2021 | this.noteNumField = value;
2022 | }
2023 | }
2024 |
2025 | ///
2026 | public byte velocity
2027 | {
2028 | get
2029 | {
2030 | return this.velocityField;
2031 | }
2032 | set
2033 | {
2034 | this.velocityField = value;
2035 | }
2036 | }
2037 |
2038 | /// CDATAセクションに変更
2039 | public XmlCDataSection lyric
2040 | {
2041 | get
2042 | {
2043 | return new XmlDocument().CreateCDataSection(this.lyricField);
2044 | }
2045 | set
2046 | {
2047 | this.lyricField = value.Value;
2048 | }
2049 | }
2050 |
2051 | ///
2052 | public typePhonemes phnms
2053 | {
2054 | get
2055 | {
2056 | return this.phnmsField;
2057 | }
2058 | set
2059 | {
2060 | this.phnmsField = value;
2061 | }
2062 | }
2063 |
2064 | ///
2065 | public noteStyle noteStyle
2066 | {
2067 | get
2068 | {
2069 | return this.noteStyleField;
2070 | }
2071 | set
2072 | {
2073 | this.noteStyleField = value;
2074 | }
2075 | }
2076 | }
2077 |
2078 | ///
2079 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2080 | [System.SerializableAttribute()]
2081 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2082 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2083 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2084 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2085 | public partial class noteStyle
2086 | {
2087 |
2088 | private typeParamAttr[] attrField;
2089 |
2090 | private seqAttr[] seqAttrField;
2091 |
2092 | ///
2093 | [System.Xml.Serialization.XmlElementAttribute("attr")]
2094 | public typeParamAttr[] attr
2095 | {
2096 | get
2097 | {
2098 | return this.attrField;
2099 | }
2100 | set
2101 | {
2102 | this.attrField = value;
2103 | }
2104 | }
2105 |
2106 | ///
2107 | [System.Xml.Serialization.XmlElementAttribute("seqAttr")]
2108 | public seqAttr[] seqAttr
2109 | {
2110 | get
2111 | {
2112 | return this.seqAttrField;
2113 | }
2114 | set
2115 | {
2116 | this.seqAttrField = value;
2117 | }
2118 | }
2119 | }
2120 |
2121 | ///
2122 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2123 | [System.SerializableAttribute()]
2124 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2125 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2126 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2127 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2128 | public partial class seqAttr
2129 | {
2130 |
2131 | private seqAttrElem[] elemField;
2132 |
2133 | private string idField;
2134 |
2135 | ///
2136 | [System.Xml.Serialization.XmlElementAttribute("elem")]
2137 | public seqAttrElem[] elem
2138 | {
2139 | get
2140 | {
2141 | return this.elemField;
2142 | }
2143 | set
2144 | {
2145 | this.elemField = value;
2146 | }
2147 | }
2148 |
2149 | ///
2150 | [System.Xml.Serialization.XmlAttributeAttribute()]
2151 | public string id
2152 | {
2153 | get
2154 | {
2155 | return this.idField;
2156 | }
2157 | set
2158 | {
2159 | this.idField = value;
2160 | }
2161 | }
2162 | }
2163 |
2164 | ///
2165 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2166 | [System.SerializableAttribute()]
2167 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2168 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2169 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2170 | public partial class seqAttrElem
2171 | {
2172 |
2173 | private int posNrmField;
2174 |
2175 | private int elvField;
2176 |
2177 | ///
2178 | public int posNrm
2179 | {
2180 | get
2181 | {
2182 | return this.posNrmField;
2183 | }
2184 | set
2185 | {
2186 | this.posNrmField = value;
2187 | }
2188 | }
2189 |
2190 | ///
2191 | public int elv
2192 | {
2193 | get
2194 | {
2195 | return this.elvField;
2196 | }
2197 | set
2198 | {
2199 | this.elvField = value;
2200 | }
2201 | }
2202 | }
2203 |
2204 | ///
2205 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2206 | [System.SerializableAttribute()]
2207 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2208 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2209 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2210 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2211 | public partial class prosodyPart
2212 | {
2213 |
2214 | private int posTickField;
2215 |
2216 | private int playTimeField;
2217 |
2218 | private string partNameField;
2219 |
2220 | private string commentField;
2221 |
2222 | private voice[] voiceField;
2223 |
2224 | private pCtrl[] pCtrlField;
2225 |
2226 | private pch[] pchField;
2227 |
2228 | private dyn[] dynField;
2229 |
2230 | private phnm[] phnmField;
2231 |
2232 | ///
2233 | public int posTick
2234 | {
2235 | get
2236 | {
2237 | return this.posTickField;
2238 | }
2239 | set
2240 | {
2241 | this.posTickField = value;
2242 | }
2243 | }
2244 |
2245 | ///
2246 | public int playTime
2247 | {
2248 | get
2249 | {
2250 | return this.playTimeField;
2251 | }
2252 | set
2253 | {
2254 | this.playTimeField = value;
2255 | }
2256 | }
2257 |
2258 | ///
2259 | public string partName
2260 | {
2261 | get
2262 | {
2263 | return this.partNameField;
2264 | }
2265 | set
2266 | {
2267 | this.partNameField = value;
2268 | }
2269 | }
2270 |
2271 | ///
2272 | public string comment
2273 | {
2274 | get
2275 | {
2276 | return this.commentField;
2277 | }
2278 | set
2279 | {
2280 | this.commentField = value;
2281 | }
2282 | }
2283 |
2284 | ///
2285 | [System.Xml.Serialization.XmlElementAttribute("voice")]
2286 | public voice[] voice
2287 | {
2288 | get
2289 | {
2290 | return this.voiceField;
2291 | }
2292 | set
2293 | {
2294 | this.voiceField = value;
2295 | }
2296 | }
2297 |
2298 | ///
2299 | [System.Xml.Serialization.XmlElementAttribute("pCtrl")]
2300 | public pCtrl[] pCtrl
2301 | {
2302 | get
2303 | {
2304 | return this.pCtrlField;
2305 | }
2306 | set
2307 | {
2308 | this.pCtrlField = value;
2309 | }
2310 | }
2311 |
2312 | ///
2313 | [System.Xml.Serialization.XmlElementAttribute("pch")]
2314 | public pch[] pch
2315 | {
2316 | get
2317 | {
2318 | return this.pchField;
2319 | }
2320 | set
2321 | {
2322 | this.pchField = value;
2323 | }
2324 | }
2325 |
2326 | ///
2327 | [System.Xml.Serialization.XmlElementAttribute("dyn")]
2328 | public dyn[] dyn
2329 | {
2330 | get
2331 | {
2332 | return this.dynField;
2333 | }
2334 | set
2335 | {
2336 | this.dynField = value;
2337 | }
2338 | }
2339 |
2340 | ///
2341 | [System.Xml.Serialization.XmlElementAttribute("phnm")]
2342 | public phnm[] phnm
2343 | {
2344 | get
2345 | {
2346 | return this.phnmField;
2347 | }
2348 | set
2349 | {
2350 | this.phnmField = value;
2351 | }
2352 | }
2353 | }
2354 |
2355 | ///
2356 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2357 | [System.SerializableAttribute()]
2358 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2359 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2360 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2361 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2362 | public partial class voice
2363 | {
2364 |
2365 | private int posSecField;
2366 |
2367 | private byte vBSField;
2368 |
2369 | private byte vPCField;
2370 |
2371 | ///
2372 | public int posSec
2373 | {
2374 | get
2375 | {
2376 | return this.posSecField;
2377 | }
2378 | set
2379 | {
2380 | this.posSecField = value;
2381 | }
2382 | }
2383 |
2384 | ///
2385 | public byte vBS
2386 | {
2387 | get
2388 | {
2389 | return this.vBSField;
2390 | }
2391 | set
2392 | {
2393 | this.vBSField = value;
2394 | }
2395 | }
2396 |
2397 | ///
2398 | public byte vPC
2399 | {
2400 | get
2401 | {
2402 | return this.vPCField;
2403 | }
2404 | set
2405 | {
2406 | this.vPCField = value;
2407 | }
2408 | }
2409 | }
2410 |
2411 | ///
2412 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2413 | [System.SerializableAttribute()]
2414 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2415 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2416 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2417 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2418 | public partial class pCtrl
2419 | {
2420 |
2421 | private int posSecField;
2422 |
2423 | private typeParamAttr attrField;
2424 |
2425 | ///
2426 | public int posSec
2427 | {
2428 | get
2429 | {
2430 | return this.posSecField;
2431 | }
2432 | set
2433 | {
2434 | this.posSecField = value;
2435 | }
2436 | }
2437 |
2438 | ///
2439 | public typeParamAttr attr
2440 | {
2441 | get
2442 | {
2443 | return this.attrField;
2444 | }
2445 | set
2446 | {
2447 | this.attrField = value;
2448 | }
2449 | }
2450 | }
2451 |
2452 | ///
2453 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2454 | [System.SerializableAttribute()]
2455 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2456 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2457 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2458 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2459 | public partial class pch
2460 | {
2461 |
2462 | private int posSecField;
2463 |
2464 | private int pchValField;
2465 |
2466 | ///
2467 | public int posSec
2468 | {
2469 | get
2470 | {
2471 | return this.posSecField;
2472 | }
2473 | set
2474 | {
2475 | this.posSecField = value;
2476 | }
2477 | }
2478 |
2479 | ///
2480 | public int pchVal
2481 | {
2482 | get
2483 | {
2484 | return this.pchValField;
2485 | }
2486 | set
2487 | {
2488 | this.pchValField = value;
2489 | }
2490 | }
2491 | }
2492 |
2493 | ///
2494 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2495 | [System.SerializableAttribute()]
2496 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2497 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2498 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2499 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2500 | public partial class dyn
2501 | {
2502 |
2503 | private int posSecField;
2504 |
2505 | private int dynValField;
2506 |
2507 | ///
2508 | public int posSec
2509 | {
2510 | get
2511 | {
2512 | return this.posSecField;
2513 | }
2514 | set
2515 | {
2516 | this.posSecField = value;
2517 | }
2518 | }
2519 |
2520 | ///
2521 | public int dynVal
2522 | {
2523 | get
2524 | {
2525 | return this.dynValField;
2526 | }
2527 | set
2528 | {
2529 | this.dynValField = value;
2530 | }
2531 | }
2532 | }
2533 |
2534 | ///
2535 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2536 | [System.SerializableAttribute()]
2537 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2538 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2539 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2540 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2541 | public partial class phnm
2542 | {
2543 |
2544 | private int posSecField;
2545 |
2546 | private int durSecField;
2547 |
2548 | private string phnmStrField;
2549 |
2550 | ///
2551 | public int posSec
2552 | {
2553 | get
2554 | {
2555 | return this.posSecField;
2556 | }
2557 | set
2558 | {
2559 | this.posSecField = value;
2560 | }
2561 | }
2562 |
2563 | ///
2564 | public int durSec
2565 | {
2566 | get
2567 | {
2568 | return this.durSecField;
2569 | }
2570 | set
2571 | {
2572 | this.durSecField = value;
2573 | }
2574 | }
2575 |
2576 | ///
2577 | public string phnmStr
2578 | {
2579 | get
2580 | {
2581 | return this.phnmStrField;
2582 | }
2583 | set
2584 | {
2585 | this.phnmStrField = value;
2586 | }
2587 | }
2588 | }
2589 |
2590 | ///
2591 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2592 | [System.SerializableAttribute()]
2593 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2594 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2595 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2596 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2597 | public partial class wavPart
2598 | {
2599 |
2600 | private int posTickField;
2601 |
2602 | private int playTimeField;
2603 |
2604 | private string partNameField;
2605 |
2606 | private string commentField;
2607 |
2608 | private uint sampleRateField;
2609 |
2610 | private byte sampleResoField;
2611 |
2612 | private byte channelsField;
2613 |
2614 | private string filePathField;
2615 |
2616 | ///
2617 | public int posTick
2618 | {
2619 | get
2620 | {
2621 | return this.posTickField;
2622 | }
2623 | set
2624 | {
2625 | this.posTickField = value;
2626 | }
2627 | }
2628 |
2629 | ///
2630 | public int playTime
2631 | {
2632 | get
2633 | {
2634 | return this.playTimeField;
2635 | }
2636 | set
2637 | {
2638 | this.playTimeField = value;
2639 | }
2640 | }
2641 |
2642 | ///
2643 | public string partName
2644 | {
2645 | get
2646 | {
2647 | return this.partNameField;
2648 | }
2649 | set
2650 | {
2651 | this.partNameField = value;
2652 | }
2653 | }
2654 |
2655 | ///
2656 | public string comment
2657 | {
2658 | get
2659 | {
2660 | return this.commentField;
2661 | }
2662 | set
2663 | {
2664 | this.commentField = value;
2665 | }
2666 | }
2667 |
2668 | ///
2669 | public uint sampleRate
2670 | {
2671 | get
2672 | {
2673 | return this.sampleRateField;
2674 | }
2675 | set
2676 | {
2677 | this.sampleRateField = value;
2678 | }
2679 | }
2680 |
2681 | ///
2682 | public byte sampleReso
2683 | {
2684 | get
2685 | {
2686 | return this.sampleResoField;
2687 | }
2688 | set
2689 | {
2690 | this.sampleResoField = value;
2691 | }
2692 | }
2693 |
2694 | ///
2695 | public byte channels
2696 | {
2697 | get
2698 | {
2699 | return this.channelsField;
2700 | }
2701 | set
2702 | {
2703 | this.channelsField = value;
2704 | }
2705 | }
2706 |
2707 | ///
2708 | public string filePath
2709 | {
2710 | get
2711 | {
2712 | return this.filePathField;
2713 | }
2714 | set
2715 | {
2716 | this.filePathField = value;
2717 | }
2718 | }
2719 | }
2720 |
2721 | ///
2722 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2723 | [System.SerializableAttribute()]
2724 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2725 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2726 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2727 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2728 | public partial class aux
2729 | {
2730 |
2731 | private string auxIDField;
2732 |
2733 | private string contentField;
2734 |
2735 | /// CDATAセクションに変更
2736 | public XmlCDataSection auxID
2737 | {
2738 | get
2739 | {
2740 | return new XmlDocument().CreateCDataSection(this.auxIDField);
2741 | }
2742 | set
2743 | {
2744 | this.auxIDField = value.Value;
2745 | }
2746 | }
2747 |
2748 | /// CDATAセクションに変更
2749 | public XmlCDataSection content
2750 | {
2751 | get
2752 | {
2753 | return new XmlDocument().CreateCDataSection(this.contentField);
2754 | }
2755 | set
2756 | {
2757 | this.contentField = value.Value;
2758 | }
2759 | }
2760 | }
2761 |
2762 | ///
2763 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2764 | [System.SerializableAttribute()]
2765 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2766 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2767 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2768 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2769 | public partial class vVoiceTable
2770 | {
2771 |
2772 | private vVoice[] vVoiceField;
2773 |
2774 | ///
2775 | [System.Xml.Serialization.XmlElementAttribute("vVoice")]
2776 | public vVoice[] vVoice
2777 | {
2778 | get
2779 | {
2780 | return this.vVoiceField;
2781 | }
2782 | set
2783 | {
2784 | this.vVoiceField = value;
2785 | }
2786 | }
2787 | }
2788 |
2789 | ///
2790 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2791 | [System.SerializableAttribute()]
2792 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2793 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2794 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2795 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2796 | public partial class partStyle
2797 | {
2798 |
2799 | private typeParamAttr[] attrField;
2800 |
2801 | ///
2802 | [System.Xml.Serialization.XmlElementAttribute("attr")]
2803 | public typeParamAttr[] attr
2804 | {
2805 | get
2806 | {
2807 | return this.attrField;
2808 | }
2809 | set
2810 | {
2811 | this.attrField = value;
2812 | }
2813 | }
2814 | }
2815 |
2816 | ///
2817 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2818 | [System.SerializableAttribute()]
2819 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2820 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2821 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2822 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2823 | public partial class seTrack
2824 | {
2825 |
2826 | private wavPart[] wavPartField;
2827 |
2828 | ///
2829 | [System.Xml.Serialization.XmlElementAttribute("wavPart")]
2830 | public wavPart[] wavPart
2831 | {
2832 | get
2833 | {
2834 | return this.wavPartField;
2835 | }
2836 | set
2837 | {
2838 | this.wavPartField = value;
2839 | }
2840 | }
2841 | }
2842 |
2843 | ///
2844 | [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
2845 | [System.SerializableAttribute()]
2846 | [System.Diagnostics.DebuggerStepThroughAttribute()]
2847 | [System.ComponentModel.DesignerCategoryAttribute("code")]
2848 | [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/")]
2849 | [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.yamaha.co.jp/vocaloid/schema/vsq3/", IsNullable = false)]
2850 | public partial class karaokeTrack
2851 | {
2852 |
2853 | private wavPart[] wavPartField;
2854 |
2855 | ///
2856 | [System.Xml.Serialization.XmlElementAttribute("wavPart")]
2857 | public wavPart[] wavPart
2858 | {
2859 | get
2860 | {
2861 | return this.wavPartField;
2862 | }
2863 | set
2864 | {
2865 | this.wavPartField = value;
2866 | }
2867 | }
2868 | }
2869 |
2870 | }
2871 |
--------------------------------------------------------------------------------
/Program.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * Program.cs
3 | * Copyright c 2018 yo_xxx
4 | *
5 | * This file is part of TI2VSQX.
6 | *
7 | * TI2VSQX is free software; you can redistribute it and/or
8 | * modify it under the terms of the BSD License.
9 | *
10 | * TI2VSQX is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 | */
14 | using System;
15 | using System.Collections.Generic;
16 | using System.Text;
17 | using System.Xml;
18 | using System.Xml.Serialization;
19 | using System.IO;
20 |
21 | namespace TI2VSQX
22 | {
23 |
24 | class Program
25 | {
26 | ///
27 | /// モーラ情報と音素をもとに、VOCALOIDの発音記号(X-SAMPA)を求めるためのテーブルのレコードの構造体
28 | ///
29 | public struct jpcommonMora
30 | {
31 | public string moraValue;
32 | public string LyricVSQX;
33 | public string PhonemeHead;
34 | public string PhonemeTail;
35 | public string PhonemeXSHead;
36 | public string PhonemeXSTail;
37 | public string PhonemeXSN;
38 | };
39 |
40 | ///
41 | /// モーラ情報と音素をもとに、VOCALOIDの発音記号(X-SAMPA)を求めるためのテーブル
42 | ///
43 | static public jpcommonMora[] jpcommonMoraArray = new jpcommonMora[]
44 | {
45 | new jpcommonMora { moraValue = "ヴョ", LyricVSQX = "ヴョ", PhonemeHead = "by", PhonemeTail = "o", PhonemeXSHead = "b" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
46 | new jpcommonMora { moraValue = "ヴュ", LyricVSQX = "ヴュ", PhonemeHead = "by", PhonemeTail = "u", PhonemeXSHead = "b" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
47 | new jpcommonMora { moraValue = "ヴャ", LyricVSQX = "ヴャ", PhonemeHead = "by", PhonemeTail = "a", PhonemeXSHead = "b" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
48 | new jpcommonMora { moraValue = "ヴォ", LyricVSQX = "ヴォ", PhonemeHead = "v" , PhonemeTail = "o", PhonemeXSHead = "b" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
49 | new jpcommonMora { moraValue = "ヴェ", LyricVSQX = "ヴェ", PhonemeHead = "v" , PhonemeTail = "e", PhonemeXSHead = "b" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
50 | new jpcommonMora { moraValue = "ヴィ", LyricVSQX = "ヴィ", PhonemeHead = "v" , PhonemeTail = "i", PhonemeXSHead = "b" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
51 | new jpcommonMora { moraValue = "ヴァ", LyricVSQX = "ヴァ", PhonemeHead = "v" , PhonemeTail = "a", PhonemeXSHead = "b" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
52 | new jpcommonMora { moraValue = "ヴ" , LyricVSQX = "ヴ", PhonemeHead = "v" , PhonemeTail = "u", PhonemeXSHead = "b" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
53 | new jpcommonMora { moraValue = "ン" , LyricVSQX = "ん", PhonemeHead = "N" , PhonemeTail = "" , PhonemeXSHead = "N\\" , PhonemeXSTail = "" , PhonemeXSN = "n" },
54 | new jpcommonMora { moraValue = "ヲ" , LyricVSQX = "を", PhonemeHead = "o" , PhonemeTail = "" , PhonemeXSHead = "o" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
55 | new jpcommonMora { moraValue = "ヱ" , LyricVSQX = "ゑ", PhonemeHead = "e" , PhonemeTail = "" , PhonemeXSHead = "w e" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
56 | new jpcommonMora { moraValue = "ヰ" , LyricVSQX = "ゐ", PhonemeHead = "i" , PhonemeTail = "" , PhonemeXSHead = "w i" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
57 | new jpcommonMora { moraValue = "ワ" , LyricVSQX = "わ", PhonemeHead = "w" , PhonemeTail = "a", PhonemeXSHead = "w" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
58 | new jpcommonMora { moraValue = "ヮ" , LyricVSQX = "ゎ", PhonemeHead = "w" , PhonemeTail = "a", PhonemeXSHead = "w" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
59 | new jpcommonMora { moraValue = "ロ" , LyricVSQX = "ろ", PhonemeHead = "r" , PhonemeTail = "o", PhonemeXSHead = "4" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
60 | new jpcommonMora { moraValue = "レ" , LyricVSQX = "れ", PhonemeHead = "r" , PhonemeTail = "e", PhonemeXSHead = "4" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
61 | new jpcommonMora { moraValue = "ル" , LyricVSQX = "る", PhonemeHead = "r" , PhonemeTail = "u", PhonemeXSHead = "4" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
62 | new jpcommonMora { moraValue = "リョ", LyricVSQX = "りょ", PhonemeHead = "ry", PhonemeTail = "o", PhonemeXSHead = "4'" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
63 | new jpcommonMora { moraValue = "リュ", LyricVSQX = "りゅ", PhonemeHead = "ry", PhonemeTail = "u", PhonemeXSHead = "4'" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
64 | new jpcommonMora { moraValue = "リャ", LyricVSQX = "りゃ", PhonemeHead = "ry", PhonemeTail = "a", PhonemeXSHead = "4'" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
65 | new jpcommonMora { moraValue = "リェ", LyricVSQX = "りぇ", PhonemeHead = "ry", PhonemeTail = "e", PhonemeXSHead = "4'" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
66 | new jpcommonMora { moraValue = "リ" , LyricVSQX = "り", PhonemeHead = "r" , PhonemeTail = "i", PhonemeXSHead = "4'" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
67 | new jpcommonMora { moraValue = "ラ" , LyricVSQX = "ら", PhonemeHead = "r" , PhonemeTail = "a", PhonemeXSHead = "4" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
68 | new jpcommonMora { moraValue = "ヨ" , LyricVSQX = "よ", PhonemeHead = "y" , PhonemeTail = "o", PhonemeXSHead = "j" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
69 | new jpcommonMora { moraValue = "ョ" , LyricVSQX = "ょ", PhonemeHead = "y" , PhonemeTail = "o", PhonemeXSHead = "j" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
70 | new jpcommonMora { moraValue = "ユ" , LyricVSQX = "ゆ", PhonemeHead = "y" , PhonemeTail = "u", PhonemeXSHead = "j" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
71 | new jpcommonMora { moraValue = "ュ" , LyricVSQX = "ゅ", PhonemeHead = "y" , PhonemeTail = "u", PhonemeXSHead = "j" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
72 | new jpcommonMora { moraValue = "ヤ" , LyricVSQX = "や", PhonemeHead = "y" , PhonemeTail = "a", PhonemeXSHead = "j" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
73 | new jpcommonMora { moraValue = "ャ" , LyricVSQX = "ゃ", PhonemeHead = "y" , PhonemeTail = "a", PhonemeXSHead = "j" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
74 | new jpcommonMora { moraValue = "モ" , LyricVSQX = "も", PhonemeHead = "m" , PhonemeTail = "o", PhonemeXSHead = "m" , PhonemeXSTail = "o" , PhonemeXSN = "m" },
75 | new jpcommonMora { moraValue = "メ" , LyricVSQX = "め", PhonemeHead = "m" , PhonemeTail = "e", PhonemeXSHead = "m" , PhonemeXSTail = "e" , PhonemeXSN = "m" },
76 | new jpcommonMora { moraValue = "ム" , LyricVSQX = "む", PhonemeHead = "m" , PhonemeTail = "u", PhonemeXSHead = "m" , PhonemeXSTail = "M" , PhonemeXSN = "m" },
77 | new jpcommonMora { moraValue = "ミョ", LyricVSQX = "みょ", PhonemeHead = "my", PhonemeTail = "o", PhonemeXSHead = "m'" , PhonemeXSTail = "o" , PhonemeXSN = "m'" },
78 | new jpcommonMora { moraValue = "ミュ", LyricVSQX = "みゅ", PhonemeHead = "my", PhonemeTail = "u", PhonemeXSHead = "m'" , PhonemeXSTail = "M" , PhonemeXSN = "m'" },
79 | new jpcommonMora { moraValue = "ミェ", LyricVSQX = "みぇ", PhonemeHead = "my", PhonemeTail = "e", PhonemeXSHead = "m'" , PhonemeXSTail = "e" , PhonemeXSN = "m'" },
80 | new jpcommonMora { moraValue = "ミャ", LyricVSQX = "みゃ", PhonemeHead = "my", PhonemeTail = "a", PhonemeXSHead = "m'" , PhonemeXSTail = "a" , PhonemeXSN = "m'" },
81 | new jpcommonMora { moraValue = "ミ" , LyricVSQX = "み", PhonemeHead = "m" , PhonemeTail = "i", PhonemeXSHead = "m'" , PhonemeXSTail = "i" , PhonemeXSN = "m'" },
82 | new jpcommonMora { moraValue = "マ" , LyricVSQX = "ま", PhonemeHead = "m" , PhonemeTail = "a", PhonemeXSHead = "m" , PhonemeXSTail = "a" , PhonemeXSN = "m" },
83 | new jpcommonMora { moraValue = "ポ" , LyricVSQX = "ぽ", PhonemeHead = "p" , PhonemeTail = "o", PhonemeXSHead = "p" , PhonemeXSTail = "o" , PhonemeXSN = "m" },
84 | new jpcommonMora { moraValue = "ボ" , LyricVSQX = "ぼ", PhonemeHead = "b" , PhonemeTail = "o", PhonemeXSHead = "b" , PhonemeXSTail = "o" , PhonemeXSN = "m" },
85 | new jpcommonMora { moraValue = "ホ" , LyricVSQX = "ほ", PhonemeHead = "h" , PhonemeTail = "o", PhonemeXSHead = "h" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
86 | new jpcommonMora { moraValue = "ペ" , LyricVSQX = "ぺ", PhonemeHead = "p" , PhonemeTail = "e", PhonemeXSHead = "p" , PhonemeXSTail = "e" , PhonemeXSN = "m" },
87 | new jpcommonMora { moraValue = "ベ" , LyricVSQX = "べ", PhonemeHead = "b" , PhonemeTail = "e", PhonemeXSHead = "b" , PhonemeXSTail = "e" , PhonemeXSN = "m" },
88 | new jpcommonMora { moraValue = "ヘ" , LyricVSQX = "へ", PhonemeHead = "h" , PhonemeTail = "e", PhonemeXSHead = "h" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
89 | new jpcommonMora { moraValue = "プ" , LyricVSQX = "ぷ", PhonemeHead = "p" , PhonemeTail = "u", PhonemeXSHead = "p" , PhonemeXSTail = "M" , PhonemeXSN = "m" },
90 | new jpcommonMora { moraValue = "ブ" , LyricVSQX = "ぶ", PhonemeHead = "b" , PhonemeTail = "u", PhonemeXSHead = "b" , PhonemeXSTail = "M" , PhonemeXSN = "m" },
91 | new jpcommonMora { moraValue = "フォ", LyricVSQX = "ふぉ", PhonemeHead = "f" , PhonemeTail = "o", PhonemeXSHead = "p\\" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
92 | new jpcommonMora { moraValue = "フェ", LyricVSQX = "ふぇ", PhonemeHead = "f" , PhonemeTail = "e", PhonemeXSHead = "p\\" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
93 | new jpcommonMora { moraValue = "フィ", LyricVSQX = "ふぃ", PhonemeHead = "f" , PhonemeTail = "i", PhonemeXSHead = "p\\'", PhonemeXSTail = "i" , PhonemeXSN = "N\\" },
94 | new jpcommonMora { moraValue = "ファ", LyricVSQX = "ふぁ", PhonemeHead = "f" , PhonemeTail = "a", PhonemeXSHead = "p\\" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
95 | new jpcommonMora { moraValue = "フ" , LyricVSQX = "ふ", PhonemeHead = "f" , PhonemeTail = "u", PhonemeXSHead = "p'" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
96 | new jpcommonMora { moraValue = "ピョ", LyricVSQX = "ぴょ", PhonemeHead = "py", PhonemeTail = "o", PhonemeXSHead = "p'" , PhonemeXSTail = "o" , PhonemeXSN = "m'" },
97 | new jpcommonMora { moraValue = "ピュ", LyricVSQX = "ぴゅ", PhonemeHead = "py", PhonemeTail = "u", PhonemeXSHead = "p'" , PhonemeXSTail = "M" , PhonemeXSN = "m'" },
98 | new jpcommonMora { moraValue = "ピャ", LyricVSQX = "ぴゃ", PhonemeHead = "py", PhonemeTail = "a", PhonemeXSHead = "p'" , PhonemeXSTail = "a" , PhonemeXSN = "m'" },
99 | new jpcommonMora { moraValue = "ピェ", LyricVSQX = "ぴぇ", PhonemeHead = "py", PhonemeTail = "e", PhonemeXSHead = "p'" , PhonemeXSTail = "e" , PhonemeXSN = "m'" },
100 | new jpcommonMora { moraValue = "ピ" , LyricVSQX = "ぴ", PhonemeHead = "p" , PhonemeTail = "i", PhonemeXSHead = "p'" , PhonemeXSTail = "i" , PhonemeXSN = "m'" },
101 | new jpcommonMora { moraValue = "ビョ", LyricVSQX = "びょ", PhonemeHead = "by", PhonemeTail = "o", PhonemeXSHead = "b'" , PhonemeXSTail = "o" , PhonemeXSN = "m'" },
102 | new jpcommonMora { moraValue = "ビュ", LyricVSQX = "びゅ", PhonemeHead = "by", PhonemeTail = "u", PhonemeXSHead = "b'" , PhonemeXSTail = "M" , PhonemeXSN = "m'" },
103 | new jpcommonMora { moraValue = "ビャ", LyricVSQX = "びゃ", PhonemeHead = "by", PhonemeTail = "a", PhonemeXSHead = "b'" , PhonemeXSTail = "a" , PhonemeXSN = "m'" },
104 | new jpcommonMora { moraValue = "ビェ", LyricVSQX = "びぇ", PhonemeHead = "by", PhonemeTail = "e", PhonemeXSHead = "b'" , PhonemeXSTail = "e" , PhonemeXSN = "m'" },
105 | new jpcommonMora { moraValue = "ビ" , LyricVSQX = "び", PhonemeHead = "b" , PhonemeTail = "i", PhonemeXSHead = "b'" , PhonemeXSTail = "i" , PhonemeXSN = "m'" },
106 | new jpcommonMora { moraValue = "ヒョ", LyricVSQX = "ひょ", PhonemeHead = "hy", PhonemeTail = "o", PhonemeXSHead = "C" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
107 | new jpcommonMora { moraValue = "ヒュ", LyricVSQX = "ひゅ", PhonemeHead = "hy", PhonemeTail = "u", PhonemeXSHead = "C" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
108 | new jpcommonMora { moraValue = "ヒャ", LyricVSQX = "ひゃ", PhonemeHead = "hy", PhonemeTail = "a", PhonemeXSHead = "C" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
109 | new jpcommonMora { moraValue = "ヒェ", LyricVSQX = "ひぇ", PhonemeHead = "hy", PhonemeTail = "e", PhonemeXSHead = "C" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
110 | new jpcommonMora { moraValue = "ヒ" , LyricVSQX = "ひ", PhonemeHead = "h" , PhonemeTail = "i", PhonemeXSHead = "C" , PhonemeXSTail = "i" , PhonemeXSN = "N\\" },
111 | new jpcommonMora { moraValue = "パ" , LyricVSQX = "ぱ", PhonemeHead = "p" , PhonemeTail = "a", PhonemeXSHead = "p" , PhonemeXSTail = "a" , PhonemeXSN = "m" },
112 | new jpcommonMora { moraValue = "バ" , LyricVSQX = "ぱ", PhonemeHead = "b" , PhonemeTail = "a", PhonemeXSHead = "b" , PhonemeXSTail = "a" , PhonemeXSN = "m" },
113 | new jpcommonMora { moraValue = "ハ" , LyricVSQX = "は", PhonemeHead = "h" , PhonemeTail = "a", PhonemeXSHead = "h" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
114 | new jpcommonMora { moraValue = "ノ" , LyricVSQX = "の", PhonemeHead = "n" , PhonemeTail = "o", PhonemeXSHead = "n" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
115 | new jpcommonMora { moraValue = "ネ" , LyricVSQX = "ね", PhonemeHead = "n" , PhonemeTail = "e", PhonemeXSHead = "n" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
116 | new jpcommonMora { moraValue = "ヌ" , LyricVSQX = "ぬ", PhonemeHead = "n" , PhonemeTail = "u", PhonemeXSHead = "n" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
117 | new jpcommonMora { moraValue = "ニョ", LyricVSQX = "にょ", PhonemeHead = "ny", PhonemeTail = "o", PhonemeXSHead = "J" , PhonemeXSTail = "o" , PhonemeXSN = "J" },
118 | new jpcommonMora { moraValue = "ニュ", LyricVSQX = "にゅ", PhonemeHead = "ny", PhonemeTail = "u", PhonemeXSHead = "J" , PhonemeXSTail = "M" , PhonemeXSN = "J" },
119 | new jpcommonMora { moraValue = "ニャ", LyricVSQX = "にゃ", PhonemeHead = "ny", PhonemeTail = "a", PhonemeXSHead = "J" , PhonemeXSTail = "a" , PhonemeXSN = "J" },
120 | new jpcommonMora { moraValue = "ニェ", LyricVSQX = "にぇ", PhonemeHead = "ny", PhonemeTail = "e", PhonemeXSHead = "J" , PhonemeXSTail = "e" , PhonemeXSN = "J" },
121 | new jpcommonMora { moraValue = "ニ" , LyricVSQX = "に", PhonemeHead = "n" , PhonemeTail = "i", PhonemeXSHead = "J" , PhonemeXSTail = "i" , PhonemeXSN = "J" },
122 | new jpcommonMora { moraValue = "ナ" , LyricVSQX = "な", PhonemeHead = "n" , PhonemeTail = "a", PhonemeXSHead = "n" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
123 | new jpcommonMora { moraValue = "ドゥ", LyricVSQX = "どぅ", PhonemeHead = "d" , PhonemeTail = "u", PhonemeXSHead = "d" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
124 | new jpcommonMora { moraValue = "ド" , LyricVSQX = "ど", PhonemeHead = "d" , PhonemeTail = "o", PhonemeXSHead = "d" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
125 | new jpcommonMora { moraValue = "トゥ", LyricVSQX = "とぅ", PhonemeHead = "t" , PhonemeTail = "u", PhonemeXSHead = "t" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
126 | new jpcommonMora { moraValue = "ト" , LyricVSQX = "と", PhonemeHead = "t" , PhonemeTail = "o", PhonemeXSHead = "t" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
127 | new jpcommonMora { moraValue = "デョ", LyricVSQX = "でょ", PhonemeHead = "dy", PhonemeTail = "o", PhonemeXSHead = "d'" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
128 | new jpcommonMora { moraValue = "デュ", LyricVSQX = "でゅ", PhonemeHead = "dy", PhonemeTail = "u", PhonemeXSHead = "d'" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
129 | new jpcommonMora { moraValue = "デャ", LyricVSQX = "でゃ", PhonemeHead = "dy", PhonemeTail = "a", PhonemeXSHead = "d'" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
130 | new jpcommonMora { moraValue = "ディ", LyricVSQX = "でぃ", PhonemeHead = "d" , PhonemeTail = "i", PhonemeXSHead = "d'" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
131 | new jpcommonMora { moraValue = "デ" , LyricVSQX = "で", PhonemeHead = "d" , PhonemeTail = "e", PhonemeXSHead = "d" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
132 | new jpcommonMora { moraValue = "テョ", LyricVSQX = "てょ", PhonemeHead = "ty", PhonemeTail = "o", PhonemeXSHead = "t'" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
133 | new jpcommonMora { moraValue = "テュ", LyricVSQX = "てゅ", PhonemeHead = "ty", PhonemeTail = "u", PhonemeXSHead = "t'" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
134 | new jpcommonMora { moraValue = "テャ", LyricVSQX = "てゃ", PhonemeHead = "ty", PhonemeTail = "a", PhonemeXSHead = "t'" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
135 | new jpcommonMora { moraValue = "ティ", LyricVSQX = "てぃ", PhonemeHead = "t" , PhonemeTail = "i", PhonemeXSHead = "t'" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
136 | new jpcommonMora { moraValue = "テ" , LyricVSQX = "て", PhonemeHead = "t" , PhonemeTail = "e", PhonemeXSHead = "t" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
137 | new jpcommonMora { moraValue = "ヅ" , LyricVSQX = "づ", PhonemeHead = "z" , PhonemeTail = "u", PhonemeXSHead = "dz" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
138 | new jpcommonMora { moraValue = "ツォ", LyricVSQX = "つぉ", PhonemeHead = "ts", PhonemeTail = "o", PhonemeXSHead = "ts" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
139 | new jpcommonMora { moraValue = "ツェ", LyricVSQX = "つぇ", PhonemeHead = "ts", PhonemeTail = "e", PhonemeXSHead = "ts" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
140 | new jpcommonMora { moraValue = "ツィ", LyricVSQX = "つぃ", PhonemeHead = "ts", PhonemeTail = "i", PhonemeXSHead = "ts" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
141 | new jpcommonMora { moraValue = "ツァ", LyricVSQX = "つぁ", PhonemeHead = "ts", PhonemeTail = "a", PhonemeXSHead = "ts" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
142 | new jpcommonMora { moraValue = "ツ" , LyricVSQX = "つ", PhonemeHead = "ts", PhonemeTail = "u", PhonemeXSHead = "ts" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
143 | new jpcommonMora { moraValue = "ッ" , LyricVSQX = "っ", PhonemeHead = "cl", PhonemeTail = "" , PhonemeXSHead = "sil" , PhonemeXSTail = "" , PhonemeXSN = "n" },
144 | new jpcommonMora { moraValue = "ヂ" , LyricVSQX = "ぢ", PhonemeHead = "j" , PhonemeTail = "i", PhonemeXSHead = "dZ" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
145 | new jpcommonMora { moraValue = "チョ", LyricVSQX = "ちょ", PhonemeHead = "ch", PhonemeTail = "o", PhonemeXSHead = "tS" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
146 | new jpcommonMora { moraValue = "チュ", LyricVSQX = "ちゅ", PhonemeHead = "ch", PhonemeTail = "u", PhonemeXSHead = "tS" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
147 | new jpcommonMora { moraValue = "チャ", LyricVSQX = "ちゃ", PhonemeHead = "ch", PhonemeTail = "a", PhonemeXSHead = "tS" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
148 | new jpcommonMora { moraValue = "チェ", LyricVSQX = "ちぇ", PhonemeHead = "ch", PhonemeTail = "e", PhonemeXSHead = "tS" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
149 | new jpcommonMora { moraValue = "チ" , LyricVSQX = "ち", PhonemeHead = "ch", PhonemeTail = "i", PhonemeXSHead = "tS" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
150 | new jpcommonMora { moraValue = "ダ" , LyricVSQX = "だ", PhonemeHead = "d" , PhonemeTail = "a", PhonemeXSHead = "d" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
151 | new jpcommonMora { moraValue = "タ" , LyricVSQX = "た", PhonemeHead = "t" , PhonemeTail = "a", PhonemeXSHead = "t" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
152 | new jpcommonMora { moraValue = "ゾ" , LyricVSQX = "ぞ", PhonemeHead = "z" , PhonemeTail = "o", PhonemeXSHead = "dz" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
153 | new jpcommonMora { moraValue = "ソ" , LyricVSQX = "そ", PhonemeHead = "s" , PhonemeTail = "o", PhonemeXSHead = "s" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
154 | new jpcommonMora { moraValue = "ゼ" , LyricVSQX = "ぜ", PhonemeHead = "z" , PhonemeTail = "e", PhonemeXSHead = "dz" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
155 | new jpcommonMora { moraValue = "セ" , LyricVSQX = "せ", PhonemeHead = "s" , PhonemeTail = "e", PhonemeXSHead = "s" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
156 | new jpcommonMora { moraValue = "ズィ", LyricVSQX = "ずぃ", PhonemeHead = "z" , PhonemeTail = "i", PhonemeXSHead = "dz" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
157 | new jpcommonMora { moraValue = "ズ" , LyricVSQX = "ず", PhonemeHead = "z" , PhonemeTail = "u", PhonemeXSHead = "dz" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
158 | new jpcommonMora { moraValue = "スィ", LyricVSQX = "すぃ", PhonemeHead = "s" , PhonemeTail = "i", PhonemeXSHead = "s" , PhonemeXSTail = "i" , PhonemeXSN = "N\\" },
159 | new jpcommonMora { moraValue = "ス" , LyricVSQX = "す", PhonemeHead = "s" , PhonemeTail = "u", PhonemeXSHead = "s" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
160 | new jpcommonMora { moraValue = "ジョ", LyricVSQX = "じょ", PhonemeHead = "j" , PhonemeTail = "o", PhonemeXSHead = "dZ" , PhonemeXSTail = "o" , PhonemeXSN = "n" },
161 | new jpcommonMora { moraValue = "ジュ", LyricVSQX = "じゅ", PhonemeHead = "j" , PhonemeTail = "u", PhonemeXSHead = "dZ" , PhonemeXSTail = "M" , PhonemeXSN = "n" },
162 | new jpcommonMora { moraValue = "ジャ", LyricVSQX = "じゃ", PhonemeHead = "j" , PhonemeTail = "a", PhonemeXSHead = "dZ" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
163 | new jpcommonMora { moraValue = "ジェ", LyricVSQX = "じぇ", PhonemeHead = "j" , PhonemeTail = "e", PhonemeXSHead = "dZ" , PhonemeXSTail = "e" , PhonemeXSN = "n" },
164 | new jpcommonMora { moraValue = "ジ" , LyricVSQX = "じ", PhonemeHead = "j" , PhonemeTail = "i", PhonemeXSHead = "dZ" , PhonemeXSTail = "i" , PhonemeXSN = "n" },
165 | new jpcommonMora { moraValue = "ショ", LyricVSQX = "しょ", PhonemeHead = "sh", PhonemeTail = "o", PhonemeXSHead = "S" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
166 | new jpcommonMora { moraValue = "シュ", LyricVSQX = "しゅ", PhonemeHead = "sh", PhonemeTail = "u", PhonemeXSHead = "S" , PhonemeXSTail = "M" , PhonemeXSN = "N\\" },
167 | new jpcommonMora { moraValue = "シャ", LyricVSQX = "しゃ", PhonemeHead = "sh", PhonemeTail = "a", PhonemeXSHead = "S" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
168 | new jpcommonMora { moraValue = "シェ", LyricVSQX = "しぇ", PhonemeHead = "sh", PhonemeTail = "e", PhonemeXSHead = "S" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
169 | new jpcommonMora { moraValue = "シ" , LyricVSQX = "し", PhonemeHead = "sh", PhonemeTail = "i", PhonemeXSHead = "S" , PhonemeXSTail = "i" , PhonemeXSN = "N\\" },
170 | new jpcommonMora { moraValue = "ザ" , LyricVSQX = "ざ", PhonemeHead = "z" , PhonemeTail = "a", PhonemeXSHead = "dz" , PhonemeXSTail = "a" , PhonemeXSN = "n" },
171 | new jpcommonMora { moraValue = "サ" , LyricVSQX = "さ", PhonemeHead = "s" , PhonemeTail = "a", PhonemeXSHead = "s" , PhonemeXSTail = "a" , PhonemeXSN = "N\\" },
172 | new jpcommonMora { moraValue = "ゴ" , LyricVSQX = "ご", PhonemeHead = "g" , PhonemeTail = "o", PhonemeXSHead = "g" , PhonemeXSTail = "o" , PhonemeXSN = "N" },
173 | new jpcommonMora { moraValue = "コ" , LyricVSQX = "こ", PhonemeHead = "k" , PhonemeTail = "o", PhonemeXSHead = "k" , PhonemeXSTail = "o" , PhonemeXSN = "N" },
174 | new jpcommonMora { moraValue = "ゲ" , LyricVSQX = "げ", PhonemeHead = "g" , PhonemeTail = "e", PhonemeXSHead = "g" , PhonemeXSTail = "e" , PhonemeXSN = "N" },
175 | new jpcommonMora { moraValue = "ケ" , LyricVSQX = "け", PhonemeHead = "k" , PhonemeTail = "e", PhonemeXSHead = "k" , PhonemeXSTail = "e" , PhonemeXSN = "N" },
176 | new jpcommonMora { moraValue = "ヶ" , LyricVSQX = "ヶ", PhonemeHead = "k" , PhonemeTail = "e", PhonemeXSHead = "k" , PhonemeXSTail = "e" , PhonemeXSN = "N" },
177 | new jpcommonMora { moraValue = "グヮ", LyricVSQX = "グヮ", PhonemeHead = "gw", PhonemeTail = "a", PhonemeXSHead = "g w" , PhonemeXSTail = "a" , PhonemeXSN = "N" },
178 | new jpcommonMora { moraValue = "グ" , LyricVSQX = "ぐ", PhonemeHead = "g" , PhonemeTail = "u", PhonemeXSHead = "g" , PhonemeXSTail = "M" , PhonemeXSN = "N" },
179 | new jpcommonMora { moraValue = "クヮ", LyricVSQX = "クヮ", PhonemeHead = "kw", PhonemeTail = "a", PhonemeXSHead = "k w" , PhonemeXSTail = "a" , PhonemeXSN = "N" },
180 | new jpcommonMora { moraValue = "ク" , LyricVSQX = "く", PhonemeHead = "k" , PhonemeTail = "u", PhonemeXSHead = "k" , PhonemeXSTail = "M" , PhonemeXSN = "N" },
181 | new jpcommonMora { moraValue = "ギョ", LyricVSQX = "ぎょ", PhonemeHead = "gy", PhonemeTail = "o", PhonemeXSHead = "g'" , PhonemeXSTail = "o" , PhonemeXSN = "N'" },
182 | new jpcommonMora { moraValue = "ギュ", LyricVSQX = "ぎゅ", PhonemeHead = "gy", PhonemeTail = "u", PhonemeXSHead = "g'" , PhonemeXSTail = "M" , PhonemeXSN = "N'" },
183 | new jpcommonMora { moraValue = "ギャ", LyricVSQX = "ぎゃ", PhonemeHead = "gy", PhonemeTail = "a", PhonemeXSHead = "g'" , PhonemeXSTail = "a" , PhonemeXSN = "N'" },
184 | new jpcommonMora { moraValue = "ギェ", LyricVSQX = "ぎぇ", PhonemeHead = "gy", PhonemeTail = "e", PhonemeXSHead = "g'" , PhonemeXSTail = "e" , PhonemeXSN = "N'" },
185 | new jpcommonMora { moraValue = "ギ" , LyricVSQX = "ぎ", PhonemeHead = "g" , PhonemeTail = "i", PhonemeXSHead = "g'" , PhonemeXSTail = "i" , PhonemeXSN = "N'" },
186 | new jpcommonMora { moraValue = "キョ", LyricVSQX = "きょ", PhonemeHead = "ky", PhonemeTail = "o", PhonemeXSHead = "k'" , PhonemeXSTail = "o" , PhonemeXSN = "N'" },
187 | new jpcommonMora { moraValue = "キュ", LyricVSQX = "きゅ", PhonemeHead = "ky", PhonemeTail = "u", PhonemeXSHead = "k'" , PhonemeXSTail = "M" , PhonemeXSN = "N'" },
188 | new jpcommonMora { moraValue = "キャ", LyricVSQX = "きゃ", PhonemeHead = "ky", PhonemeTail = "a", PhonemeXSHead = "k'" , PhonemeXSTail = "a" , PhonemeXSN = "N'" },
189 | new jpcommonMora { moraValue = "キェ", LyricVSQX = "きぇ", PhonemeHead = "ky", PhonemeTail = "e", PhonemeXSHead = "k'" , PhonemeXSTail = "e" , PhonemeXSN = "N'" },
190 | new jpcommonMora { moraValue = "キ" , LyricVSQX = "き", PhonemeHead = "k" , PhonemeTail = "i", PhonemeXSHead = "k'" , PhonemeXSTail = "i" , PhonemeXSN = "N'" },
191 | new jpcommonMora { moraValue = "ガ" , LyricVSQX = "が", PhonemeHead = "g" , PhonemeTail = "a", PhonemeXSHead = "g" , PhonemeXSTail = "a" , PhonemeXSN = "N" },
192 | new jpcommonMora { moraValue = "カ" , LyricVSQX = "か", PhonemeHead = "k" , PhonemeTail = "a", PhonemeXSHead = "k" , PhonemeXSTail = "a" , PhonemeXSN = "N" },
193 | new jpcommonMora { moraValue = "オ" , LyricVSQX = "お", PhonemeHead = "o" , PhonemeTail = "" , PhonemeXSHead = "o" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
194 | new jpcommonMora { moraValue = "ォ" , LyricVSQX = "ぉ", PhonemeHead = "o" , PhonemeTail = "" , PhonemeXSHead = "o" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
195 | new jpcommonMora { moraValue = "エ" , LyricVSQX = "え", PhonemeHead = "e" , PhonemeTail = "" , PhonemeXSHead = "e" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
196 | new jpcommonMora { moraValue = "ェ" , LyricVSQX = "ぇ", PhonemeHead = "e" , PhonemeTail = "" , PhonemeXSHead = "e" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
197 | new jpcommonMora { moraValue = "ウォ", LyricVSQX = "うぉ", PhonemeHead = "w" , PhonemeTail = "o", PhonemeXSHead = "w" , PhonemeXSTail = "o" , PhonemeXSN = "N\\" },
198 | new jpcommonMora { moraValue = "ウェ", LyricVSQX = "うぇ", PhonemeHead = "w" , PhonemeTail = "e", PhonemeXSHead = "w" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
199 | new jpcommonMora { moraValue = "ウィ", LyricVSQX = "うぃ", PhonemeHead = "w" , PhonemeTail = "i", PhonemeXSHead = "w" , PhonemeXSTail = "i" , PhonemeXSN = "N\\" },
200 | new jpcommonMora { moraValue = "ウ" , LyricVSQX = "う", PhonemeHead = "u" , PhonemeTail = "" , PhonemeXSHead = "M" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
201 | new jpcommonMora { moraValue = "ゥ" , LyricVSQX = "ぅ", PhonemeHead = "u" , PhonemeTail = "" , PhonemeXSHead = "M" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
202 | new jpcommonMora { moraValue = "イェ", LyricVSQX = "いぇ", PhonemeHead = "y" , PhonemeTail = "e", PhonemeXSHead = "j" , PhonemeXSTail = "e" , PhonemeXSN = "N\\" },
203 | new jpcommonMora { moraValue = "イ" , LyricVSQX = "い", PhonemeHead = "i" , PhonemeTail = "" , PhonemeXSHead = "i" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
204 | new jpcommonMora { moraValue = "ィ" , LyricVSQX = "ぃ", PhonemeHead = "i" , PhonemeTail = "" , PhonemeXSHead = "i" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
205 | new jpcommonMora { moraValue = "ア" , LyricVSQX = "あ", PhonemeHead = "a" , PhonemeTail = "" , PhonemeXSHead = "a" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
206 | new jpcommonMora { moraValue = "ァ" , LyricVSQX = "ぁ", PhonemeHead = "a" , PhonemeTail = "" , PhonemeXSHead = "a" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
207 | new jpcommonMora { moraValue = "ー" , LyricVSQX = "ー", PhonemeHead = "a" , PhonemeTail = "" , PhonemeXSHead = "-" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
208 | new jpcommonMora { moraValue = "ー" , LyricVSQX = "ー", PhonemeHead = "i" , PhonemeTail = "" , PhonemeXSHead = "-" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
209 | new jpcommonMora { moraValue = "ー" , LyricVSQX = "ー", PhonemeHead = "u" , PhonemeTail = "" , PhonemeXSHead = "-" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
210 | new jpcommonMora { moraValue = "ー" , LyricVSQX = "ー", PhonemeHead = "e" , PhonemeTail = "" , PhonemeXSHead = "-" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
211 | new jpcommonMora { moraValue = "ー" , LyricVSQX = "ー", PhonemeHead = "o" , PhonemeTail = "" , PhonemeXSHead = "-" , PhonemeXSTail = "" , PhonemeXSN = "N\\" },
212 | new jpcommonMora { moraValue = "" , LyricVSQX = "", PhonemeHead = "" , PhonemeTail = "" , PhonemeXSHead = "" , PhonemeXSTail = "" , PhonemeXSN = "" }
213 | };
214 |
215 | ///
216 | /// モーラの文字と音素から発音記号(X-SAMPA)を求める
217 | ///
218 | /// モーラの文字
219 | /// 現在の音素
220 | /// 次の音素
221 | /// 発音記号
222 | static public string PhonemeXS(string moraValue, string Phoneme,string nextPhonemeValue)
223 | {
224 |
225 | //音素の無声化情報を削除する。無声化情報は変数に格納する。
226 | bool IsVoiceless = false;
227 | switch (Phoneme)
228 | {
229 | case "A":
230 | Phoneme = "a";
231 | IsVoiceless = true;
232 | break;
233 | case "I":
234 | Phoneme = "i";
235 | IsVoiceless = true;
236 | break;
237 | case "U":
238 | Phoneme = "u";
239 | IsVoiceless = true;
240 | break;
241 | case "E":
242 | Phoneme = "e";
243 | IsVoiceless = true;
244 | break;
245 | case "O":
246 | Phoneme = "o";
247 | IsVoiceless = true;
248 | break;
249 | };
250 |
251 | //無声化してモーラに「’」がある場合は取り除いて判定に使う
252 | if (moraValue.Length > 1)
253 | {
254 | if (moraValue.Substring(1, 1) == "’")
255 | {
256 | moraValue = moraValue.Substring(0, 1);
257 | }
258 | }
259 |
260 | //発音記号はモーラと音素をもとに配列検索して求める
261 | for (int i = 0; i < jpcommonMoraArray.Length; i++ )
262 | {
263 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
264 | (Phoneme == jpcommonMoraArray[i].PhonemeHead))
265 | {
266 | return jpcommonMoraArray[i].PhonemeXSHead ;
267 | }else
268 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
269 | (Phoneme == jpcommonMoraArray[i].PhonemeTail))
270 | {
271 | //文末で「う」で無声化している場合は母音部分に「Asp」を設定する
272 | if ((Phoneme == "u") &
273 | (IsVoiceless == true) &
274 | (nextPhonemeValue == "sil" | nextPhonemeValue == "pau"))
275 | {
276 | return jpcommonMoraArray[i].PhonemeXSHead + " " + "Asp";
277 | }
278 | else
279 | {
280 | return jpcommonMoraArray[i].PhonemeXSHead + " " + jpcommonMoraArray[i].PhonemeXSTail;
281 | }
282 | }
283 | };
284 | return Phoneme;
285 | }
286 |
287 | ///
288 | /// 音素から「ん」の発音記号(X-SAMPA)を求める(Wikipedia「日本語の音韻」の「撥音/N/の子音」の項目参照)
289 | ///
290 | /// 次の音素
291 | /// 次の次の音素
292 | /// 発音記号
293 | static public string PhonemeXSN(string nextPhonemeValue, string afternextPhonemeValue)
294 | {
295 | //「ん」の発音記号は次とその次の音素をもとに配列検索して求める
296 | for (int i = 0; i < jpcommonMoraArray.Length; i++)
297 | {
298 | if ((nextPhonemeValue == jpcommonMoraArray[i].PhonemeHead) &
299 | (afternextPhonemeValue == jpcommonMoraArray[i].PhonemeTail))
300 | {
301 | return jpcommonMoraArray[i].PhonemeXSN;
302 | }
303 | };
304 | //「ん」の次の音素が文末で母音の場合向けに次の音素だけで検索
305 | for (int i = 0; i < jpcommonMoraArray.Length; i++)
306 | {
307 | if (nextPhonemeValue == jpcommonMoraArray[i].PhonemeHead)
308 | {
309 | return jpcommonMoraArray[i].PhonemeXSN;
310 | }
311 | };
312 | //見つからなければ文末扱い
313 | return "N\\";
314 | }
315 |
316 | ///
317 | /// モーラの文字と音素から歌詞を求める
318 | ///
319 | /// モーラの文字
320 | /// 現在の音素
321 | /// 歌詞
322 | static public string moraToLyric(string moraValue, string Phoneme)
323 | {
324 |
325 | //無声化情報を削除する
326 | switch (Phoneme)
327 | {
328 | case "A":
329 | Phoneme = "a";
330 | break;
331 | case "I":
332 | Phoneme = "i";
333 | break;
334 | case "U":
335 | Phoneme = "u";
336 | break;
337 | case "E":
338 | Phoneme = "e";
339 | break;
340 | case "O":
341 | Phoneme = "o";
342 | break;
343 | };
344 |
345 | //無声化してモーラに「’」がある場合は取り除いて判定に使う
346 | if (moraValue.Length > 1)
347 | {
348 | if (moraValue.Substring(1, 1) == "’")
349 | {
350 | moraValue = moraValue.Substring(0, 1);
351 | }
352 | }
353 |
354 | //歌詞はモーラと音素をもとに配列検索して求める
355 | for (int i = 0; i < jpcommonMoraArray.Length; i++)
356 | {
357 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
358 | (Phoneme == jpcommonMoraArray[i].PhonemeHead))
359 | {
360 | //あ段の母音・「っ」「ん」で合致した場合は発音記号をそのまま変換する。
361 | switch (Phoneme)
362 | {
363 | case "a":
364 | return "あ";
365 | case "i":
366 | return "い";
367 | case "u":
368 | return "う";
369 | case "e":
370 | return "え";
371 | case "o":
372 | return "お";
373 | case "cl":
374 | return "っ";
375 | case "N":
376 | return "ん";
377 | //子音で合致した場合は発音記号をそのまま編集する。
378 | default:
379 | return Phoneme;
380 | }
381 | }
382 | else
383 | //母音部分にモーラ文字をひらがな変換した文字を編集する
384 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
385 | (Phoneme == jpcommonMoraArray[i].PhonemeTail))
386 | {
387 | return jpcommonMoraArray[i].LyricVSQX;
388 | }
389 | };
390 | return Phoneme;
391 | }
392 |
393 | ///
394 | /// モーラの文字と音素から発音記号(X-SAMPA)を求める(母音音符モード用)
395 | ///
396 | /// モーラの文字
397 | /// 現在の音素
398 | /// 次の音素
399 | /// 前の音素
400 | /// 発音記号
401 | static public string PhonemeXS2(string moraValue, string Phoneme, string nextPhonemeValue, string prevPhonemeValue)
402 | {
403 |
404 | //音素の無声化情報を削除する。無声化情報は変数に格納する。
405 | bool IsVoiceless = false;
406 | switch (Phoneme)
407 | {
408 | case "A":
409 | Phoneme = "a";
410 | IsVoiceless = true;
411 | break;
412 | case "I":
413 | Phoneme = "i";
414 | IsVoiceless = true;
415 | break;
416 | case "U":
417 | Phoneme = "u";
418 | IsVoiceless = true;
419 | break;
420 | case "E":
421 | Phoneme = "e";
422 | IsVoiceless = true;
423 | break;
424 | case "O":
425 | Phoneme = "o";
426 | IsVoiceless = true;
427 | break;
428 | };
429 |
430 | //前の音素の無声化情報を削除する。
431 | switch (prevPhonemeValue)
432 | {
433 | case "A":
434 | prevPhonemeValue = "a";
435 | break;
436 | case "I":
437 | prevPhonemeValue = "i";
438 | break;
439 | case "U":
440 | prevPhonemeValue = "u";
441 | break;
442 | case "E":
443 | prevPhonemeValue = "e";
444 | break;
445 | case "O":
446 | prevPhonemeValue = "o";
447 | break;
448 | };
449 |
450 | //無声化してモーラに「’」がある場合は取り除いて判定に使う
451 | if (moraValue.Length > 1)
452 | {
453 | if (moraValue.Substring(1, 1) == "’")
454 | {
455 | moraValue = moraValue.Substring(0, 1);
456 | }
457 | }
458 |
459 | //発音記号はモーラと音素をもとに配列検索して求める
460 | for (int i = 0; i < jpcommonMoraArray.Length; i++)
461 | {
462 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
463 | (Phoneme == jpcommonMoraArray[i].PhonemeHead))
464 | {
465 | //あ段の母音・「っ」「ん」で合致した場合は発音記号をそのまま変換する。
466 | switch (Phoneme)
467 | {
468 | case "a":
469 | case "i":
470 | case "u":
471 | case "e":
472 | case "o":
473 | case "cl":
474 | case "N":
475 | return jpcommonMoraArray[i].PhonemeXSHead;
476 | default:
477 | //子音で合致した場合は前の音素が母音なら引き継ぎ、それ以外は「Asp」にする。
478 | switch (prevPhonemeValue)
479 | {
480 | case "a":
481 | Phoneme = "a";
482 | break;
483 | case "i":
484 | Phoneme = "i";
485 | break;
486 | case "u":
487 | Phoneme = "M";
488 | break;
489 | case "e":
490 | Phoneme = "e";
491 | break;
492 | case "o":
493 | Phoneme = "o";
494 | break;
495 | //「ん」の場合は本来さらに手前の発音記号をもとに設定するのが正しいが簡易版として「n」を使用する。
496 | //母音音符モードはVOCALOID以外の音声合成エンジンを意識した物であり発音記号はそれほど使わないため。
497 | case "N":
498 | Phoneme = "n";
499 | break;
500 | default:
501 | Phoneme = "Asp";
502 | break;
503 | }
504 | break;
505 | }
506 | return Phoneme;
507 | }
508 | else
509 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
510 | (Phoneme == jpcommonMoraArray[i].PhonemeTail))
511 | {
512 | //文末で「う」で無声化している場合は母音部分に「Asp」を設定する
513 | if ((Phoneme == "u") &
514 | (IsVoiceless == true) &
515 | (nextPhonemeValue == "sil" | nextPhonemeValue == "pau"))
516 | {
517 | return jpcommonMoraArray[i].PhonemeXSHead + " " + "Asp";
518 | }
519 | else
520 | {
521 | return jpcommonMoraArray[i].PhonemeXSHead + " " + jpcommonMoraArray[i].PhonemeXSTail;
522 | }
523 | }
524 | };
525 | return Phoneme;
526 | }
527 |
528 | ///
529 | /// モーラの文字と音素から歌詞を求める(母音音符モード用)
530 | ///
531 | /// モーラの文字
532 | /// 現在の音素
533 | /// 歌詞
534 | static public string moraToLyric2(string moraValue, string Phoneme,string prevPhonemeValue)
535 | {
536 |
537 | //無声化情報を削除する
538 | switch (Phoneme)
539 | {
540 | case "A":
541 | Phoneme = "a";
542 | break;
543 | case "I":
544 | Phoneme = "i";
545 | break;
546 | case "U":
547 | Phoneme = "u";
548 | break;
549 | case "E":
550 | Phoneme = "e";
551 | break;
552 | case "O":
553 | Phoneme = "o";
554 | break;
555 | };
556 |
557 | //前の音素の無声化情報を削除する。
558 | switch (prevPhonemeValue)
559 | {
560 | case "A":
561 | prevPhonemeValue = "a";
562 | break;
563 | case "I":
564 | prevPhonemeValue = "i";
565 | break;
566 | case "U":
567 | prevPhonemeValue = "u";
568 | break;
569 | case "E":
570 | prevPhonemeValue = "e";
571 | break;
572 | case "O":
573 | prevPhonemeValue = "o";
574 | break;
575 | };
576 |
577 | //無声化してモーラに「’」がある場合は取り除いて判定に使う
578 | if (moraValue.Length > 1)
579 | {
580 | if (moraValue.Substring(1, 1) == "’")
581 | {
582 | moraValue = moraValue.Substring(0, 1);
583 | }
584 | }
585 |
586 | //歌詞はモーラと音素をもとに配列検索して求める
587 | for (int i = 0; i < jpcommonMoraArray.Length; i++)
588 | {
589 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
590 | (Phoneme == jpcommonMoraArray[i].PhonemeHead))
591 | {
592 | //発音記号があ段の母音・「っ」「ん」で合致した場合は、その発音記号から変換する。
593 | //モーラ文字が長音の場合もここで歌詞変換する。「っ」はUTAUの休符である「R」にする。
594 | switch (Phoneme)
595 | {
596 | case "a":
597 | return "あ";
598 | case "i":
599 | return "い";
600 | case "u":
601 | return "う";
602 | case "e":
603 | return "え";
604 | case "o":
605 | return "お";
606 | case "cl":
607 | return "R";
608 | case "N":
609 | return "ん";
610 | //子音で合致した場合は前の音素が母音なら引き継ぎ、それ以外はUTAUの休符である「R」にする。
611 | default:
612 | switch (prevPhonemeValue)
613 | {
614 | case "a":
615 | return "あ";
616 | case "i":
617 | return "い";
618 | case "u":
619 | return "う";
620 | case "e":
621 | return "え";
622 | case "o":
623 | return "お";
624 | case "cl":
625 | return "R";
626 | case "N":
627 | return "ん";
628 | default:
629 | return "R";
630 | }
631 | }
632 | }
633 | else
634 | //母音部分にモーラ文字をひらがな変換した文字を編集する
635 | if ((moraValue == jpcommonMoraArray[i].moraValue) &
636 | (Phoneme == jpcommonMoraArray[i].PhonemeTail))
637 | {
638 | return jpcommonMoraArray[i].LyricVSQX;
639 | }
640 | };
641 | return Phoneme;
642 | }
643 |
644 | ///
645 | /// vsq3オブジェクト(VOCALOID3用VSQX)を初期化する
646 | ///
647 | /// シンガーのcompID
648 | /// シンガー名
649 | /// vsq3クラスのオブジェクト(初期設定済)
650 | static vsq3 VSQX_Init(string compIDValue, string vVoiceNamevalue)
651 | {
652 | vsq3 VSQX = new vsq3();
653 |
654 | VSQX.vender = new XmlDocument().CreateCDataSection("Yamaha corporation");
655 | VSQX.version = new XmlDocument().CreateCDataSection("3.0.0.11");
656 |
657 | VSQX.vVoiceTable = new vVoice[] { new vVoice { } };
658 |
659 | VSQX.vVoiceTable[0].compID = new XmlDocument().CreateCDataSection(compIDValue);
660 | VSQX.vVoiceTable[0].vBS = 0;
661 | VSQX.vVoiceTable[0].vPC = 0;
662 | VSQX.vVoiceTable[0].vVoiceName = new XmlDocument().CreateCDataSection(vVoiceNamevalue);
663 |
664 | VSQX.vVoiceTable[0].vVoiceParam = new vVoiceParam { };
665 |
666 | VSQX.vVoiceTable[0].vVoiceParam.bre = 0;
667 | VSQX.vVoiceTable[0].vVoiceParam.bri = 0;
668 | VSQX.vVoiceTable[0].vVoiceParam.cle = 0;
669 | VSQX.vVoiceTable[0].vVoiceParam.gen = 0;
670 | VSQX.vVoiceTable[0].vVoiceParam.ope = 0;
671 |
672 | VSQX.mixer = new mixer { };
673 |
674 | VSQX.mixer.masterUnit = new masterUnit { };
675 |
676 | VSQX.mixer.masterUnit.outDev = 0;
677 | VSQX.mixer.masterUnit.retLevel = 0;
678 | VSQX.mixer.masterUnit.vol = 0;
679 |
680 | VSQX.mixer.vsUnit = new vsUnit[] { new vsUnit { } };
681 |
682 | VSQX.mixer.vsUnit[0].vsTrackNo = 0;
683 | VSQX.mixer.vsUnit[0].inGain = 0;
684 | VSQX.mixer.vsUnit[0].sendLevel = -898;
685 | VSQX.mixer.vsUnit[0].sendEnable = 0;
686 | VSQX.mixer.vsUnit[0].mute = 0;
687 | VSQX.mixer.vsUnit[0].solo = 0;
688 | VSQX.mixer.vsUnit[0].pan = 64;
689 | VSQX.mixer.vsUnit[0].vol = 0;
690 |
691 | VSQX.mixer.seUnit = new seUnit { };
692 |
693 | VSQX.mixer.seUnit.inGain = 0;
694 | VSQX.mixer.seUnit.sendLevel = -898;
695 | VSQX.mixer.seUnit.sendEnable = 0;
696 | VSQX.mixer.seUnit.mute = 0;
697 | VSQX.mixer.seUnit.solo = 0;
698 | VSQX.mixer.seUnit.pan = 64;
699 | VSQX.mixer.seUnit.vol = 0;
700 |
701 | VSQX.mixer.karaokeUnit = new karaokeUnit { };
702 |
703 | VSQX.mixer.karaokeUnit.inGain = 0;
704 | VSQX.mixer.karaokeUnit.mute = 0;
705 | VSQX.mixer.karaokeUnit.solo = 0;
706 | VSQX.mixer.karaokeUnit.vol = -129;
707 |
708 | VSQX.masterTrack = new masterTrack { };
709 |
710 | VSQX.masterTrack.seqName = new XmlDocument().CreateCDataSection("Untitled1");
711 | VSQX.masterTrack.comment = new XmlDocument().CreateCDataSection("New VSQ File");
712 | VSQX.masterTrack.resolution = 480;
713 | //デフォルトプリメジャーは1小節
714 | VSQX.masterTrack.preMeasure = 1;
715 |
716 | VSQX.masterTrack.timeSig = new timeSig[] { new timeSig { } };
717 |
718 | //4分の4拍子とする
719 | VSQX.masterTrack.timeSig[0].posMes = 0;
720 | VSQX.masterTrack.timeSig[0].nume = 4;
721 | VSQX.masterTrack.timeSig[0].denomi = 4;
722 |
723 | VSQX.masterTrack.tempo = new tempo[] { new tempo { } };
724 |
725 | //トラック先頭からBPM150で設定する(64分音符を25msにするため)
726 | VSQX.masterTrack.tempo[0].posTick = 0;
727 | VSQX.masterTrack.tempo[0].bpm = 15000;
728 |
729 | VSQX.vsTrack = new vsTrack[] { new vsTrack { } };
730 |
731 | VSQX.vsTrack[0].vsTrackNo = 0;
732 | VSQX.vsTrack[0].trackName = new XmlDocument().CreateCDataSection("Track");
733 | VSQX.vsTrack[0].comment = new XmlDocument().CreateCDataSection("Track");
734 |
735 | VSQX.vsTrack[0].Items = new object[]
736 | {
737 | new musicalPart
738 | {
739 | posTick = 1920, //デフォルトプリメジャーが1小節なので、1拍480tick*4拍進んだ場所が先頭位置
740 | playTime = 76800, //とりあえず40小節(bpm150で64秒)
741 | partName = new XmlDocument().CreateCDataSection("NewPart"),
742 | comment = new XmlDocument().CreateCDataSection("New Musical Part"),
743 |
744 | stylePlugin = new stylePlugin
745 | {
746 | stylePluginID = new XmlDocument().CreateCDataSection("ACA9C502-A04B-42b5-B2EB-5CEA36D16FCE"),
747 | stylePluginName = new XmlDocument().CreateCDataSection("VOCALOID2 Compatible Style"),
748 | version = new XmlDocument().CreateCDataSection("3.0.0.1")
749 | },
750 |
751 | partStyle = new typeParamAttr[]
752 | {
753 | new typeParamAttr {id = "accent", Value = 50},
754 | new typeParamAttr {id = "bendDep", Value = 0},
755 | new typeParamAttr {id = "bendLen", Value = 0},
756 | new typeParamAttr {id = "decay", Value = 0},
757 | new typeParamAttr {id = "fallPort", Value = 0},
758 | new typeParamAttr {id = "opening", Value = 127},
759 | new typeParamAttr {id = "risePort", Value = 0}
760 | },
761 |
762 | singer = new singer[]
763 | {
764 | new singer {posTick =0 ,vBS =0 ,vPC=0 }
765 | },
766 |
767 | note = new note[] { }
768 |
769 | }
770 | };
771 |
772 | VSQX.seTrack = new wavPart[] { };
773 |
774 | VSQX.karaokeTrack = new wavPart[] { };
775 |
776 | VSQX.aux = new aux[] { new aux { } };
777 |
778 | VSQX.aux[0].auxID = new XmlDocument().CreateCDataSection("AUX_VST_HOST_CHUNK_INFO");
779 | VSQX.aux[0].content = new XmlDocument().CreateCDataSection("VlNDSwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
780 |
781 | return VSQX;
782 |
783 | }
784 |
785 | ///
786 | /// トレース情報と音階と音符長さをもとに、vsq3クラスの音符を編集する
787 | ///
788 | /// 入力トレース情報
789 | /// 音階(MIDIノート番号)
790 | /// 音符位置(Tick値)
791 | /// 音符長さ(Tick値)
792 | /// vsq3クラスの音符
793 | static note VSQX_note(TIF I01TIF, byte noteNumValue, Double posTickValue, Double durTickValue, TI2VSQXConfig TI2VSQXCFG)
794 | {
795 | string PhonemeXSValue;
796 | string lyricS;
797 |
798 | //空白は音符の長さを64分音符1個分にする(メインロジックと重複しているが念のため入れておく)
799 | if (I01TIF.PhonemeCurrent == "sil" | I01TIF.PhonemeCurrent == "pau")
800 | {
801 | PhonemeXSValue = "Asp";
802 | lyricS = "Asp";
803 | durTickValue = 30;
804 | }
805 | else
806 | {
807 | //トレース情報の音素をもとにボーカロイドで使う発音記号を求める。
808 | if (TI2VSQXCFG.NoteSplitMode == TI2VSQXConfig.NoteSplitMode_Consonant)
809 | {
810 | PhonemeXSValue = PhonemeXS(I01TIF.MoraCurrent, I01TIF.PhonemeCurrent, I01TIF.PhonemeNext);
811 | lyricS = moraToLyric(I01TIF.MoraCurrent, I01TIF.PhonemeCurrent);
812 | }
813 | else
814 | {
815 | PhonemeXSValue = PhonemeXS2(I01TIF.MoraCurrent, I01TIF.PhonemeCurrent, I01TIF.PhonemeNext, I01TIF.PhonemePrev);
816 | lyricS = moraToLyric2(I01TIF.MoraCurrent, I01TIF.PhonemeCurrent, I01TIF.PhonemePrev);
817 | }
818 | //音素が「ン」の場合は次のモーラの音素を参照して発音記号を求める。
819 | if (I01TIF.MoraCurrent == "ン")
820 | {
821 | PhonemeXSValue = PhonemeXSN(I01TIF.PhonemeNext, I01TIF.PhonemeAfterNext);
822 | }
823 | };
824 |
825 | var nt = new note
826 | {
827 | posTick = (int)posTickValue,
828 | durTick = (int)durTickValue,
829 | noteNum = noteNumValue,
830 | velocity = 64,
831 | lyric = new XmlDocument().CreateCDataSection(lyricS),
832 |
833 | phnms = new typePhonemes
834 | {
835 | //子音部分の歌詞がトレース情報の音素情報であり発音記号に変換できないため、プロテクトをかけて発音記号が崩れないようにする。
836 | @lock = 1,
837 | lockSpecified = true,
838 | Value = PhonemeXSValue
839 | },
840 |
841 | noteStyle = new noteStyle
842 | {
843 | attr = new typeParamAttr[]
844 | {
845 | new typeParamAttr { id = "accent", Value = 50},
846 | new typeParamAttr { id = "bendDep", Value = 0},
847 | new typeParamAttr { id = "bendLen", Value = 0},
848 | new typeParamAttr { id = "decay", Value = 0},
849 | new typeParamAttr { id = "fallPort", Value = 0},
850 | new typeParamAttr { id = "opening", Value = 127},
851 | new typeParamAttr { id = "risePort", Value = 0},
852 | new typeParamAttr { id = "vibLen", Value = 0},
853 | new typeParamAttr { id = "vibType", Value = 0}
854 | },
855 | seqAttr = new seqAttr[] { }
856 | }
857 | };
858 | return nt;
859 | }
860 |
861 | ///
862 | /// 各種動作設定を扱うクラス
863 | ///
864 | public class TI2VSQXConfig
865 | {
866 | public string compID;
867 | public string vVoiceName;
868 | public Double BaseNoteNum;
869 | public Double MiddleNoteNum;
870 | public Double TopNoteNum;
871 | public Double NaturalEndNoteNum;
872 | public Double BottomNoteNum;
873 | public Double QuestionNoteNum;
874 | public Double NoteSplitMode;
875 |
876 | public const Double NoteSplitMode_Consonant = 1; //子音単独音素を分割して前に置く(通常方式)
877 | public const Double NoteSplitMode_Vowel = 2; //母音単独音素を分割して後ろに置く(UTAUなど他の歌声合成方式変換用)
878 |
879 | ///
880 | /// 各種動作設定を扱うクラスのコンストラクタ
881 | ///
882 | /// 設定ファイルのパス
883 | public TI2VSQXConfig(string sConfigpass)
884 | {
885 | //デフォルト値設定
886 | compID = "BCNFCY43LB2LZCD4";
887 | vVoiceName = "MIKU_V4X_Original_EVEC";
888 | BaseNoteNum = 62.00;
889 | MiddleNoteNum = 67.00;
890 | TopNoteNum = 70.00;
891 | NaturalEndNoteNum = 68.00;
892 | BottomNoteNum = 60.00;
893 | QuestionNoteNum = 66.00;
894 | NoteSplitMode = 1.00;
895 |
896 | if (!System.IO.File.Exists(sConfigpass))
897 | {
898 | return;
899 | };
900 |
901 | System.IO.StreamReader srConfig = new System.IO.StreamReader(sConfigpass, Encoding.GetEncoding("SHIFT_JIS"));
902 |
903 | string CFG_Line = srConfig.ReadLine();
904 | string[] item;
905 |
906 | while (srConfig.EndOfStream == false)
907 | {
908 | item = CFG_Line.Split('=');
909 | item[0] = item[0].Trim();
910 | item[1] = item[1].Trim();
911 | switch (item[0])
912 | {
913 | case "compID":
914 | compID = item[1];
915 | break;
916 | case "vVoiceName":
917 | vVoiceName = item[1];
918 | break;
919 | case "BaseNoteNum":
920 | BaseNoteNum = Convert.ToInt32(item[1]);
921 | if ((0 <= BaseNoteNum) & (BaseNoteNum <= 127))
922 | {
923 | BaseNoteNum = BaseNoteNum * 1.00;
924 | }
925 | else
926 | {
927 | BaseNoteNum = 62.00;
928 | }
929 | break;
930 | case "MiddleNoteNum":
931 | MiddleNoteNum = Convert.ToInt32(item[1]);
932 | if ((0 <= MiddleNoteNum) & (MiddleNoteNum <= 127))
933 | {
934 | MiddleNoteNum = MiddleNoteNum * 1.00;
935 | }
936 | else
937 | {
938 | MiddleNoteNum = 67.00;
939 | }
940 | break;
941 | case "TopNoteNum":
942 | TopNoteNum = Convert.ToInt32(item[1]);
943 | if ((0 <= TopNoteNum) & (TopNoteNum <= 127))
944 | {
945 | TopNoteNum = TopNoteNum * 1.00;
946 | }
947 | else
948 | {
949 | TopNoteNum = 70.00;
950 | }
951 | break;
952 | case "NaturalEndNoteNum":
953 | NaturalEndNoteNum = Convert.ToInt32(item[1]);
954 | if ((0 <= NaturalEndNoteNum) & (NaturalEndNoteNum <= 127))
955 | {
956 | NaturalEndNoteNum = NaturalEndNoteNum * 1.00;
957 | }
958 | else
959 | {
960 | NaturalEndNoteNum = 68.00;
961 | }
962 | break;
963 | case "BottomNoteNum":
964 | BottomNoteNum = Convert.ToInt32(item[1]);
965 | if ((0 <= BottomNoteNum) & (BottomNoteNum <= 127))
966 | {
967 | BottomNoteNum = BottomNoteNum * 1.00;
968 | }
969 | else
970 | {
971 | BottomNoteNum = 60.00;
972 | }
973 | break;
974 | case "QuestionNoteNum":
975 | QuestionNoteNum = Convert.ToInt32(item[1]);
976 | if ((0 <= QuestionNoteNum) & (QuestionNoteNum <= 127))
977 | {
978 | QuestionNoteNum = QuestionNoteNum * 1.00;
979 | }
980 | else
981 | {
982 | QuestionNoteNum = 64.00;
983 | }
984 | break;
985 | case "NoteSplitMode":
986 | NoteSplitMode = Convert.ToInt32(item[1]);
987 | if ((1 <= NoteSplitMode) & (NoteSplitMode <= 2))
988 | {
989 | NoteSplitMode = NoteSplitMode * 1.00;
990 | }
991 | else
992 | {
993 | NoteSplitMode = 1.00;
994 | }
995 | break;
996 | }
997 | CFG_Line = srConfig.ReadLine();
998 | }
999 | }
1000 | }
1001 |
1002 | ///
1003 | /// トレース情報で扱う秒(0.1マイクロ秒)をTick値に変換する。BPM150で64分音符(25ms)単位にする。
1004 | ///
1005 | /// トレース情報で扱う秒(0.1マイクロ秒)
1006 | /// Tick値変換した値
1007 | public static double MicroSecondToTick(double MicroSecond)
1008 | {
1009 | //秒数を64分音符の個数に変換する。BPM150なので64分音符1個は25ms。
1010 | Decimal MicroSecondD = (Decimal)MicroSecond;
1011 | MicroSecondD = MicroSecondD / 25m;
1012 | MicroSecondD = MicroSecondD / 10000m;
1013 | MicroSecondD = Math.Round(MicroSecondD);
1014 | MicroSecondD = MicroSecondD * 30m;
1015 | return (double)MicroSecondD;
1016 | }
1017 |
1018 | ///
1019 | /// メインプログラム
1020 | ///
1021 | static void Main(string[] args)
1022 | {
1023 |
1024 | // 各種ファイルのパスをコマンドライン引数から取得する
1025 | string sConfigPass = args[0]; //設定情報
1026 | string sTIFPass = args[1]; //入力するトレース情報
1027 | string sTIFXAPass = args[2]; //入力したトレース情報のリストをシリアライズしたもの
1028 | string sTIFXPass = args[3]; //入力したトレース情報のリストをシリアライズしたもの
1029 | string sVSQXPass = args[4]; //出力VSQXファイル
1030 |
1031 | if (!System.IO.File.Exists(sTIFPass))
1032 | {
1033 | Console.WriteLine("'" + sTIFPass + "'は存在しません。");
1034 | return;
1035 | }
1036 |
1037 | // 設定情報を読んで設定情報を取得する
1038 | var TI2VSQXCFG = new TI2VSQXConfig(sConfigPass);
1039 |
1040 | // vsq3オブジェクトの初期設定
1041 | var VSQX = VSQX_Init(TI2VSQXCFG.compID, TI2VSQXCFG.vVoiceName);
1042 |
1043 | // 音符情報と、対応するトレース情報リストのレコード情報を格納する配列を暫定的に要素10000個で設定
1044 | var noteArray = new note[10000];
1045 | var TIFArray = new TIF[10000];
1046 |
1047 | // トレース情報を格納するリストを設定
1048 | var T01TIF = new List();
1049 |
1050 | // 処理全体単位の変数初期設定
1051 | int noteIdx = 0;
1052 | byte noteNumValue = 0;
1053 | Double posTickValue = 0;
1054 | Double durTickValue = 0;
1055 |
1056 | System.IO.StreamReader srTIF = new System.IO.StreamReader(sTIFPass, Encoding.GetEncoding("SHIFT_JIS"));
1057 |
1058 | TIF I01TIF;
1059 | string I01_Line = srTIF.ReadLine();
1060 |
1061 | //トレース情報をテキスト解析情報のタイトルまで読み飛ばす
1062 | while ((srTIF.EndOfStream == false) & (I01_Line != "[Text analysis result]"))
1063 | {
1064 | I01_Line = srTIF.ReadLine();
1065 | }
1066 |
1067 | //タイトルは読み飛ばす
1068 | if (srTIF.EndOfStream == false)
1069 | {
1070 | I01_Line = srTIF.ReadLine();
1071 | }
1072 |
1073 | TIF_TextAnalysis I01TIFTXA;
1074 | var T01TIFTXA = new List();
1075 |
1076 | //テキスト解析情報を読み終わるで処理する
1077 | while ((srTIF.EndOfStream == false) & (I01_Line != ""))
1078 | {
1079 | I01TIFTXA = new TIF_TextAnalysis(I01_Line);
1080 | //テキスト解析情報のシリアライズ用にリストに追加する
1081 | T01TIFTXA.Add(I01TIFTXA);
1082 | I01_Line = srTIF.ReadLine();
1083 | }
1084 |
1085 | //トレース情報をラベル情報のタイトルまで読み飛ばす
1086 | while ((srTIF.EndOfStream == false) & (I01_Line != "[Output label]"))
1087 | {
1088 | I01_Line = srTIF.ReadLine();
1089 | }
1090 |
1091 | //タイトルは読み飛ばす
1092 | if (srTIF.EndOfStream == false)
1093 | {
1094 | I01_Line = srTIF.ReadLine();
1095 | }
1096 |
1097 | //出力ラベル情報を読み終わるで処理する
1098 | while ((srTIF.EndOfStream == false) & (I01_Line != ""))
1099 | {
1100 | I01TIF = new TIF(I01_Line);
1101 |
1102 | //呼気段落ごとの処理用変数を初期化する
1103 | int noteIdxInUtterance = 0;
1104 | int MoraLocStart = 0;
1105 | int MoraNoteIdxStart = 0;
1106 | String Mora1 = "";
1107 | int MoraLoc1 = 0;
1108 | int MoraNoteIdx1 = 0;
1109 | String Mora2 = "";
1110 | int MoraLoc2 = 0;
1111 | int MoraNoteIdx2 = 0;
1112 | String Mora3 = "";
1113 | int MoraLoc3 = 0;
1114 | int MoraNoteIdx3 = 0;
1115 | String Mora4 = "";
1116 | int MoraLoc4 = 0;
1117 | int MoraNoteIdx4 = 0;
1118 | String MoraTop = "";
1119 | int MoraLocTop = 0;
1120 | int MoraNoteIdxTop = 0;
1121 | String MoraDownStart = "";
1122 | int MoraLocDownStart = 0;
1123 | int MoraNoteIdxDownStart = 0;
1124 | String MoraEnd = "";
1125 | int MoraLocEnd = 0;
1126 | int MoraNoteIdxEnd = 0;
1127 |
1128 | //音符位置をTick値に変換する。
1129 | posTickValue = MicroSecondToTick(I01TIF.PhonemeFrom);
1130 |
1131 | string OldMoraDiffAccent = I01TIF.MoraDiffAccent;
1132 | string OldMoraPosForward = I01TIF.MoraPosForward;
1133 | string OldMoraPosBackward = I01TIF.MoraPosBackward;
1134 |
1135 | //呼気段落末までの繰り返し
1136 | while (I01TIF.BreathPosInUtteranceForward != "xx")
1137 | {
1138 |
1139 | //音符長さを求める
1140 | durTickValue = MicroSecondToTick(I01TIF.PhonemeTo - I01TIF.PhonemeFrom);
1141 |
1142 | //音符を配列に追加
1143 | noteArray[noteIdx] = VSQX_note(I01TIF, (byte)TI2VSQXCFG.BaseNoteNum, posTickValue, durTickValue, TI2VSQXCFG);
1144 | TIFArray[noteIdx] = I01TIF;
1145 |
1146 | //1モーラ目~4モーラ目までの開始位置の音符の位置情報を取得する
1147 | if (Mora1 == "")
1148 | {
1149 | Mora1 = I01TIF.MoraCurrent;
1150 | MoraLoc1 = (int)posTickValue;
1151 | MoraNoteIdx1 = noteIdx;
1152 | }
1153 |
1154 | //モーラが変わったか判定する
1155 | if ((OldMoraDiffAccent != I01TIF.MoraDiffAccent) |
1156 | (OldMoraPosForward != I01TIF.MoraPosForward) |
1157 | (OldMoraPosBackward != I01TIF.MoraPosBackward))
1158 | {
1159 | if (Mora2 == "")
1160 | {
1161 | Mora2 = I01TIF.MoraCurrent;
1162 | MoraLoc2 = (int)posTickValue;
1163 | MoraNoteIdx2 = noteIdx;
1164 | }else if (Mora3 == "")
1165 | {
1166 | Mora3 = I01TIF.MoraCurrent;
1167 | MoraLoc3 = (int)posTickValue;
1168 | MoraNoteIdx3 = noteIdx;
1169 | }else if (Mora4 == "")
1170 | {
1171 | Mora4 = I01TIF.MoraCurrent;
1172 | MoraLoc4 = (int)posTickValue;
1173 | MoraNoteIdx4 = noteIdx;
1174 | }
1175 | }
1176 | OldMoraDiffAccent = I01TIF.MoraDiffAccent;
1177 | OldMoraPosForward = I01TIF.MoraPosForward;
1178 | OldMoraPosBackward = I01TIF.MoraPosBackward;
1179 |
1180 | //最初のアクセント核モーラ開始位置の音符の位置情報を取得する(下降開始位置への調整は後で行う)
1181 | if (MoraDownStart == "")
1182 | {
1183 | if (I01TIF.MoraDiffAccent == "0")
1184 | {
1185 | MoraDownStart = I01TIF.MoraCurrent;
1186 | MoraNoteIdxDownStart = noteIdx;
1187 | }
1188 | }
1189 |
1190 | //呼気段落末の音符の位置情報を取得する
1191 | MoraEnd = I01TIF.MoraCurrent;
1192 | MoraLocEnd = (int)posTickValue + (int)durTickValue ;
1193 | MoraNoteIdxEnd = noteIdx;
1194 |
1195 | //次の音符の開始位置は音符長さ分進んだ直後にする(音符の重複回避のため)
1196 | posTickValue = posTickValue + durTickValue;
1197 |
1198 | //配列の添字を次に進める
1199 | noteIdx++;
1200 | noteIdxInUtterance++;
1201 |
1202 | //トレース情報のシリアライズ用にリストに追加する
1203 | T01TIF.Add(I01TIF);
1204 |
1205 | //次のトレース情報レコードを読む
1206 | I01_Line = srTIF.ReadLine();
1207 | I01TIF = new TIF(I01_Line);
1208 | }
1209 |
1210 | //文字数が短いなど、上記ロジックでアクセント下降開始位置が求められない場合は句末を下降開始位置とする。
1211 | if (MoraDownStart == "")
1212 | {
1213 | MoraNoteIdxDownStart = MoraNoteIdxEnd;
1214 | }
1215 |
1216 | //呼気段落内に音素がある場合は(「音素がない」のは先頭空白のみのはず)
1217 | if (noteIdxInUtterance != 0)
1218 | {
1219 | //アクセント核がある場合は下降開始位置を求める。
1220 | //基本はアクセント核の次のモーラ開始位置だが、
1221 | //次のモーラの音素数が1つ(あ段)の場合はアクセント核の最終音素を開始位置とする
1222 | if (MoraDownStart != "")
1223 | {
1224 | //次の音素がある場合
1225 | if ((MoraNoteIdxDownStart + 1) <= MoraNoteIdxEnd)
1226 | {
1227 | //次の音素がアクセント核のモーラの時は
1228 | if (T01TIF[MoraNoteIdxDownStart + 1].MoraDiffAccent == "0")
1229 | {
1230 | //次の次の音素がある場合
1231 | if ((MoraNoteIdxDownStart + 2) <= MoraNoteIdxEnd)
1232 | {
1233 | //次の次の音素が同じアクセント句の次のモーラの場合は
1234 | if (T01TIF[MoraNoteIdxDownStart + 2].MoraDiffAccent == "1")
1235 | {
1236 | MoraNoteIdxDownStart = MoraNoteIdxDownStart + 2;
1237 | MoraDownStart = T01TIF[MoraNoteIdxDownStart].MoraCurrent;
1238 | //音符位置をtick値に変換する。
1239 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeFrom);
1240 | }
1241 | //次の次の音素が別のアクセント句のモーラの場合は
1242 | else
1243 | {
1244 | MoraNoteIdxDownStart = MoraNoteIdxDownStart + 1;
1245 | MoraDownStart = T01TIF[MoraNoteIdxDownStart].MoraCurrent;
1246 | //音符位置をtick値に変換する。
1247 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeFrom);
1248 | }
1249 | }
1250 | //次の次の音素がない場合
1251 | else
1252 | {
1253 | MoraNoteIdxDownStart = MoraNoteIdxDownStart + 1;
1254 | MoraDownStart = T01TIF[MoraNoteIdxDownStart].MoraCurrent;
1255 | //音符位置をtick値に変換する。
1256 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeFrom);
1257 | }
1258 | }
1259 | //次の音素がアクセント核のモーラでない時は
1260 | else
1261 | {
1262 | //次の音素が同じアクセント句の次のモーラの場合は
1263 | if (T01TIF[MoraNoteIdxDownStart + 1].MoraDiffAccent == "1")
1264 | {
1265 | MoraNoteIdxDownStart = MoraNoteIdxDownStart + 1;
1266 | MoraDownStart = T01TIF[MoraNoteIdxDownStart].MoraCurrent;
1267 | //音符位置をtick値に変換する。
1268 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeFrom);
1269 | }
1270 | //次の音素が別のアクセント句のモーラの場合は
1271 | else
1272 | {
1273 | //先頭がアクセント核でかつ音素数が1つの場合の下降開始位置としてアクセント核の音素終了位置を設定する
1274 | //音符位置をtick値に変換する。
1275 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeTo);
1276 | }
1277 | }
1278 | }
1279 | //次の音素がない場合
1280 | else
1281 | {
1282 | //下降開始位置としてアクセント核の音素終了位置を設定する
1283 | //音符位置をtick値に変換する。
1284 | MoraLocDownStart = (int)MicroSecondToTick(T01TIF[MoraNoteIdxDownStart].PhonemeTo);
1285 | }
1286 | }
1287 |
1288 | //句頭上昇位置を求める。基本は2モーラ目直後の音符
1289 | MoraTop = Mora2;
1290 | MoraLocTop = MoraLoc3;
1291 | MoraNoteIdxTop = MoraNoteIdx3;
1292 | MoraLocStart = MoraLoc2;
1293 | MoraNoteIdxStart = MoraNoteIdx2;
1294 |
1295 | //3モーラ目がない場合は1モーラ目直後にする
1296 | if (Mora3 == "")
1297 | {
1298 | MoraTop = Mora1;
1299 | MoraLocTop = MoraLoc2;
1300 | MoraNoteIdxTop = MoraNoteIdx2;
1301 | MoraLocStart = MoraLoc1;
1302 | MoraNoteIdxStart = MoraNoteIdx1;
1303 | }
1304 |
1305 | //2モーラ目がない場合は1モーラ目にする
1306 | if (Mora2 == "")
1307 | {
1308 | MoraTop = Mora1;
1309 | MoraLocTop = MoraLoc1;
1310 | MoraNoteIdxTop = MoraNoteIdx1;
1311 | MoraLocStart = MoraLoc1;
1312 | MoraNoteIdxStart = MoraNoteIdx1;
1313 | }
1314 |
1315 | //2モーラ目が「ん」あるいは「ー」の場合は1モーラ目直後にずらす
1316 | if (MoraTop == "ン" | MoraTop == "ー")
1317 | {
1318 | MoraTop = Mora1;
1319 | MoraLocTop = MoraLoc2;
1320 | MoraNoteIdxTop = MoraNoteIdx2;
1321 | MoraLocStart = MoraLoc1;
1322 | MoraNoteIdxStart = MoraNoteIdx1;
1323 | }
1324 |
1325 | //2モーラ目が「ッ」の場合は3モーラ目直後にずらす
1326 | if (MoraTop == "ッ")
1327 | {
1328 | MoraTop = Mora3;
1329 | MoraLocTop = MoraLoc4;
1330 | MoraNoteIdxTop = MoraNoteIdx4;
1331 | MoraLocStart = MoraLoc3;
1332 | MoraNoteIdxStart = MoraNoteIdx3;
1333 | }
1334 |
1335 | //1モーラ目がアクセント核の場合は1モーラ目直後にずらす
1336 | if (MoraNoteIdxDownStart <= MoraNoteIdx2)
1337 | {
1338 | MoraTop = Mora1;
1339 | MoraLocTop = MoraLoc2;
1340 | MoraNoteIdxTop = MoraNoteIdx2;
1341 | MoraLocStart = MoraLoc1;
1342 | MoraNoteIdxStart = MoraNoteIdx1;
1343 | }
1344 |
1345 |
1346 | //句頭上昇部分の音階を設定する
1347 | noteArray[MoraNoteIdxTop].noteNum = (byte)TI2VSQXCFG.TopNoteNum;
1348 | if (MoraNoteIdxTop != MoraNoteIdx1)
1349 | {
1350 | noteArray[MoraNoteIdxTop - 1].noteNum = (byte)TI2VSQXCFG.MiddleNoteNum;
1351 | }
1352 |
1353 | //音階頂点位置から呼気段落末(音の高さは自然下降のみとする)までの傾きを求める
1354 | Decimal SlopeNatural = (Decimal)(TI2VSQXCFG.NaturalEndNoteNum - TI2VSQXCFG.TopNoteNum) / (MoraLocEnd - MoraLocTop);
1355 |
1356 | //アクセント核からあとの時間の合計を求める
1357 | Decimal SlopeLen = 0;
1358 | Decimal SlopeEnd = 0;
1359 | for (int i = MoraNoteIdxDownStart; i <= MoraNoteIdxEnd; i++)
1360 | {
1361 | int MoraDiff = Convert.ToInt32(TIFArray[i].MoraDiffAccent);
1362 | if (MoraDiff > 0)
1363 | {
1364 | SlopeLen = SlopeLen + noteArray[i].durTick;
1365 | //アクセント核からあとの下降時の傾きを求める
1366 | SlopeEnd = (Decimal)(TI2VSQXCFG.BottomNoteNum - TI2VSQXCFG.NaturalEndNoteNum) / SlopeLen;
1367 | }
1368 | }
1369 |
1370 | Decimal DownPos = 0;
1371 | Decimal x1 = 0;
1372 | Decimal x2 = 0;
1373 | Decimal x3 = 0;
1374 | for (int i = MoraNoteIdxTop + 1; i <= MoraNoteIdxEnd; i++)
1375 | {
1376 | //自然下降のみとして、音階頂点位置からの音階下げ幅を求める
1377 | x1 = (noteArray[i].posTick - noteArray[MoraNoteIdxTop].posTick);
1378 | x1 = x1 * SlopeNatural;
1379 |
1380 | //アクセント核がある場合は
1381 | if (MoraDownStart != "")
1382 | {
1383 | int MoraDiff = Convert.ToInt32(TIFArray[i].MoraDiffAccent);
1384 | //アクセント核からあとは句末への下降部分の音階下げ幅を求める
1385 | if (MoraDiff > 0)
1386 | {
1387 | x2 = DownPos * SlopeEnd;
1388 | DownPos = DownPos + noteArray[i].durTick;
1389 | }
1390 | }
1391 |
1392 | //自然下降の下げ幅とアクセント核から後の下降時の下げ幅の合算を音階下げ幅とする
1393 | x3 = (Decimal)TI2VSQXCFG.TopNoteNum + x1 + x2 ;
1394 | noteArray[i].noteNum = (byte)Math.Round(x3);
1395 | }
1396 |
1397 | //呼気段落末直後の空白音符の音階を設定する。
1398 | if (I01TIF.IsInterrogativePrevAcc == "0")
1399 | {
1400 | //アクセント核を持たない場合は自然下降した先の音程とする
1401 | if (MoraDownStart == "")
1402 | {
1403 | noteNumValue = (byte)TI2VSQXCFG.NaturalEndNoteNum;
1404 | }
1405 | //アクセント核を持つ場合
1406 | else
1407 | {
1408 | //アクセント核で終わっている場合はアクセント核の音程を維持する
1409 | if (T01TIF[noteIdx - 1].MoraDiffAccent == "0")
1410 | {
1411 | noteNumValue = noteArray[noteIdx - 1].noteNum;
1412 | }
1413 | //アクセント核で終わってない場合は文末の音程に下げていく
1414 | else
1415 | {
1416 | noteNumValue = (byte)TI2VSQXCFG.BottomNoteNum;
1417 | }
1418 | }
1419 | }
1420 | //疑問文は音階を上げる
1421 | else
1422 | {
1423 | noteNumValue = (byte)TI2VSQXCFG.QuestionNoteNum;
1424 | }
1425 |
1426 | //呼気段落末直後の空白音符の長さは64分音符1個分
1427 | durTickValue = 30;
1428 |
1429 | //呼気段落末直後の空白音符を追加する
1430 | noteArray[noteIdx] = VSQX_note(I01TIF, noteNumValue, posTickValue, durTickValue, TI2VSQXCFG);
1431 | noteIdx++;
1432 | T01TIF.Add(I01TIF);
1433 |
1434 | }
1435 | //次のトレース情報を読む
1436 | I01_Line = srTIF.ReadLine();
1437 |
1438 | }
1439 | srTIF.Close();
1440 |
1441 | // 音階を設定した音符情報をvsq3オブジェクトに設定する
1442 | ((musicalPart)(VSQX.vsTrack[0].Items[0])).note = noteArray;
1443 |
1444 | // パート長さは最後の音符位置から一拍あと
1445 | ((musicalPart)(VSQX.vsTrack[0].Items[0])).playTime = (int)posTickValue + 30 + 480;
1446 |
1447 | // トレース情報のテキスト解析情報リストをシリアライズする
1448 | var xmlSerializer1 = new XmlSerializer(typeof(List));
1449 | using (var streamWriter = new StreamWriter(sTIFXAPass, false, Encoding.UTF8))
1450 | {
1451 | xmlSerializer1.Serialize(streamWriter, T01TIFTXA);
1452 | streamWriter.Flush();
1453 | }
1454 |
1455 | // トレース情報の出力ラベル情報リストをシリアライズする
1456 | var xmlSerializer2 = new XmlSerializer(typeof(List));
1457 | using (var streamWriter = new StreamWriter(sTIFXPass, false, Encoding.UTF8))
1458 | {
1459 | xmlSerializer2.Serialize(streamWriter, T01TIF);
1460 | streamWriter.Flush();
1461 | }
1462 |
1463 | // vsq3オブジェクトをシリアライズする
1464 | var xmlSerializer3 = new XmlSerializer(typeof(vsq3));
1465 | using (var streamWriter = new StreamWriter(sVSQXPass, false, Encoding.UTF8))
1466 | {
1467 | xmlSerializer3.Serialize(streamWriter, VSQX);
1468 | streamWriter.Flush();
1469 | }
1470 |
1471 | }
1472 | }
1473 | }
--------------------------------------------------------------------------------