Beispiel #1
0
        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);
            }
        }