├── 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 | } --------------------------------------------------------------------------------