public static SingerConfig readSingerConfig( string file, int original, ref string log ) { SingerConfig sc = new SingerConfig(); //original = original; sc.ID = "VOCALOID:VIRTUAL:VOICE"; sc.FORMAT = "2.0.0.0"; sc.VOICEIDSTR = ""; sc.VOICENAME = "Miku"; sc.Breathiness = 0; sc.Brightness = 0; sc.Clearness = 0; sc.Opening = 0; sc.GenderFactor = 0; sc.Original = original; //original = 0; FileStream fs = null; try { fs = new FileStream( file, FileMode.Open, FileAccess.Read ); int length = (int)fs.Length; byte[] dat = new byte[length]; fs.Read( dat, 0, length ); decode_vvd_bytes( ref dat ); for ( int i = 0; i < dat.Length - 1; i++ ) { if ( dat[i] == 0x17 && dat[i + 1] == 0x10 ) { dat[i] = 0x0d; dat[i + 1] = 0x0a; } } string str = bocoree.cp932.convert( dat ); string crlf = ((char)0x0d).ToString() + ((char)0x0a).ToString(); string[] spl = str.Split( new string[] { crlf }, StringSplitOptions.RemoveEmptyEntries ); foreach ( string s in spl ) { int first = s.IndexOf( '"' ); int first_end = get_quated_string( s, first ); int second = s.IndexOf( '"', first_end + 1 ); int second_end = get_quated_string( s, second ); char[] chs = s.ToCharArray(); string id = new string( chs, first, first_end - first + 1 ); string value = new string( chs, second, second_end - second + 1 ); id = id.Substring( 1, id.Length - 2 ); value = value.Substring( 1, value.Length - 2 ); value = value.Replace( "\\\"", "\"" ); log += "\"" + id + "\" "; if ( id == "ID" ) { sc.ID = value; } else if ( id == "FORMAT" ) { sc.FORMAT = value; } else if ( id == "VOICEIDSTR" ) { sc.VOICEIDSTR = value; } else if ( id == "VOICENAME" ) { sc.VOICENAME = value; } else if ( id == "Breathiness" ) { try { sc.Breathiness = int.Parse( value ); } catch { } } else if ( id == "Brightness" ) { try { sc.Brightness = int.Parse( value ); } catch { } } else if ( id == "Clearness" ) { try { sc.Clearness = int.Parse( value ); } catch { } } else if ( id == "Opening" ) { try { sc.Opening = int.Parse( value ); } catch { } } else if ( id == "Gender:Factor" ) { try { sc.GenderFactor = int.Parse( value ); } catch { } } } } catch { } finally { if ( fs != null ) { fs.Close(); } } return sc; }
public object Clone() { SingerConfig ret = new SingerConfig(); ret.ID = ID; ret.FORMAT = FORMAT; ret.VOICEIDSTR = VOICEIDSTR; ret.VOICENAME = VOICENAME; ret.Breathiness = Breathiness; ret.Brightness = Brightness; ret.Clearness = Clearness; ret.Opening = Opening; ret.GenderFactor = GenderFactor; ret.Original = Original; ret.Program = Program; return ret; }