public static VocalIndexObject Deseralize(string Folder) { VocalIndexObject ret = null; if (System.IO.File.Exists(Folder + "\\voicedbi.dat")) { ret = SerializeFrom(Folder + "\\voicedbi.dat"); if (ret != null) { string NewHash = CalcHash(ret.HashFiles, Folder); if (NewHash != ret.HashValue) { ret = null; } } } if (ret == null) { ret = new VocalIndexObject(); ret.BasicData.IntroduceText = "Chorista Voice Index Cache File"; ret.HashFiles.Add("character.txt"); ret.CharacertData = CharacterSerializer.DeSerialize(Folder + "\\character.txt"); ret.SndAtomList = OtoSerializer.DeSerialize(Folder, ret.HashFiles); ret.HashFiles.Add("prefix.map"); if (System.IO.File.Exists(Folder + "\\prefix.map")) { ret.PrefixAtomList = PrefixMapSerialzier.DeSerialize(Folder + "\\prefix.map"); } SplitDictionary sdlib = null; if (System.IO.File.Exists(Folder + "\\splitdic.json")) { sdlib = SplitDictionary.SerializeFrom(Folder + "\\splitdic.json"); if (ret != null) { ret.HashFiles.Add("splitdic.json"); } } if (sdlib == null && System.IO.File.Exists(Folder + "\\presamp.ini")) { sdlib = Presamp2DictSerializer.DeSerialize(Folder + "\\presamp.ini"); if (sdlib != null) { ret.HashFiles.Add("presamp.ini"); } } if (sdlib != null) { ret.SplitDictionary = sdlib; } else { ret.SplitDictionary = new SplitDictionary(); } ret.SplitDictionary.MapSndList(ret.SndAtomList, ret.PrefixAtomList); ret.HashValue = CalcHash(ret.HashFiles, Folder); SerializeTo(ret, Folder + "\\voicedbi.dat"); } return(ret); }
public static SplitDictionary DeSerialize(string FilePath) { SplitDictionary ret = new SplitDictionary(); Dictionary <string, string> VMap = new Dictionary <string, string>(); Dictionary <string, string> CMap = new Dictionary <string, string>(); Encoding FileEnc = Encoding.ASCII;// FileEncodingUtils.GetEncodingJIS(FilePath); string[] Datas = System.IO.File.ReadAllLines(FilePath, FileEnc); LoadSamp(Datas, ref ret); return(ret); }
static void Main(string[] args) { SplitDictionary sd = Presamp2DictSerializer.DeSerialize(@"D:\VocalUtau\VocalUtau\bin\Debug\voicedb\YongQi_CVVChinese_Version2\presamp.ini"); List <VocalUtau.Formats.Model.Database.VocalDatabase.SplitDictionary.SplitAtom> sal = sd.GetCurrentNoteAtom("xxxx", "lao", "{R}"); }
static void LoadSamp(string[] T, ref SplitDictionary Dict) { bool isVOWEL = false; bool isCONSONANT = false; bool isENDType = false; string EndCH = "R"; string[] S = T; foreach (string s in S) { if (s.Substring(0, 1) == "[") { isVOWEL = false; isCONSONANT = false; } if (s.IndexOf("[VOWEL]") >= 0) { isVOWEL = true; continue; } if (s.IndexOf("[CONSONANT]") >= 0) { isCONSONANT = true; continue; } if (s.IndexOf("[ENDTYPE]") >= 0) { isENDType = true; continue; } if (isENDType) { if (s.IndexOf("%v% ") != -1) { string[] w = s.Split(new string[] { "%v% " }, StringSplitOptions.None); try { EndCH = w[1]; } catch {; } } } if (isVOWEL) { string[] k = s.Split('='); string Si1 = k[0]; string Si2 = k[1]; string Si3 = k[2]; string[] o = Si3.Split(','); foreach (string so in o) { try { if (Dict.NoteAtomMap.ContainsKey(so)) { Dict.NoteAtomMap[so][2] = Si1; } else { List <string> lt = new List <string>() { so, Si1, Si1 }; Dict.NoteAtomMap.Add(so, lt); } } catch {; } } } if (isCONSONANT) { string[] k = s.Split('='); string Si1 = k[0]; string Si2 = k[1]; string[] o = Si2.Split(','); foreach (string so in o) { try { if (Dict.NoteAtomMap.ContainsKey(so)) { Dict.NoteAtomMap[so][1] = Si1; } else { List <string> lt = new List <string>() { so, Si1, "" }; Dict.NoteAtomMap.Add(so, lt); } } catch {; } } } } try { if (Dict.NoteAtomMap.ContainsKey("{R}")) { Dict.NoteAtomMap["{R}"][1] = EndCH; } else { List <string> lt = new List <string>() { "", EndCH, "" }; Dict.NoteAtomMap.Add("{R}", lt); } } catch {; } }