void BuildCalibrationTable() { List <String> HeaderLines = new List <string>(); List <String> HeaderLinesA = new List <string>(); List <String> HeaderLinesB = new List <string>(); int skip = 4; int total = 256 / skip; HeaderLines.Add(String.Format("#define SHAPECOMPENSATIONCOUNT {0}", total)); HeaderLines.Add(""); HeaderLinesB.Add(String.Format("int const BasicShapeMult[SHAPECOMPENSATIONCOUNT] = {{")); HeaderLinesA.Add(String.Format("int const BasicShapeLow[SHAPECOMPENSATIONCOUNT] = {{")); string L = ""; string L2 = ""; for (int i = 0; i < 256; i += skip) { Shape.Value = 0; Phase.Value = 64; Speed.Value = 255; Mod.Value = i; RebuildLFO(true); Int64 vmin = values64[0]; Int64 vmax = values64[0]; for (int j = i; j < 5000; j++) { if (values64[j] < vmin) { vmin = values64[j]; } else { if (values64[j] > vmax) { vmax = values64[j]; } } } if (L.Length == 0) { L += "\t"; } if (L2.Length == 0) { L2 += "\t"; } L += String.Format("{0}", (vmin + vmax) / 2); Int64 range = vmax - vmin; L2 += String.Format("{0}", (vmax - vmin)); if (i < 256 - skip) { L += ", "; L2 += ", "; } ; if ((i / skip) % 8 == 7) { HeaderLinesB.Add(L2); HeaderLinesA.Add(L); L = ""; L2 = ""; } Console.WriteLine("{0} : {1} -> {2}", i, vmin, vmax); } if (L2.Length > 0) { HeaderLinesB.Add(L2); } if (L.Length > 0) { HeaderLinesA.Add(L); } HeaderLinesA.Add("};"); HeaderLinesA.Add(""); HeaderLinesB.Add("};"); HeaderLines.AddRange(HeaderLinesA); HeaderLines.AddRange(HeaderLinesB); System.IO.File.WriteAllLines("BasicShapeCompensation.h", HeaderLines.ToArray()); for (int i = 0; i < 256; i++) { long P = TestFrameLoader.GetLFOPhaseInc(i); float F = (0xffffffff / P) / 2000.0f;; Console.WriteLine("{0:X} -> {1}", P, F); } }