示例#1
0
        private List <byte> MakeHeader_mucom88(PCMFileManager fileManager)
        {
            List <byte> head = new List <byte>();
            int         ptr  = 0;

            for (int i = 0; i < 32; i++)
            {
                head.AddRange(fileManager.GetName(i, 16));                  //instrument name 16byte
                head.AddRange(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); //dummy 10byte(limit/sample rate/volume etc.)
                head.Add((byte)(fileManager.GetVolume(i)));
                head.Add((byte)(fileManager.GetVolume(i) >> 8));
                int length = fileManager.GetLengthAddress(i);
                if (length < 1)
                {
                    head.Add(0);
                    head.Add(0);
                    head.Add(0);
                    head.Add(0);
                }
                else
                {
                    ushort stAdr = (ushort)(ptr >> 2);
                    ptr += length - 1;
                    ushort edAdr = (ushort)ptr;// (ptr >> 2);
                    ptr++;
                    head.Add((byte)(stAdr));
                    head.Add((byte)(stAdr >> 8));
                    head.Add((byte)(edAdr));
                    head.Add((byte)(edAdr >> 8));
                }
            }
            return(head);
        }
示例#2
0
        private List <byte> MakeHeader_mucomDotNET_OPNB_ADPCMA(PCMFileManager fileManager)
        {
            List <byte> head = new List <byte>();
            int         ptr  = 0;

            head.Add((byte)'m');
            head.Add((byte)'d');
            head.Add((byte)'b');
            head.Add((byte)'a');

            int num = fileManager.GetCount();

            head.Add((byte)num);
            head.Add((byte)(num >> 8));

            for (int i = 0; i <= num; i++)
            {
                head.AddRange(fileManager.GetName(i));//instrument name 16byte
                head.Add(3);
                head.Add((byte)(fileManager.GetVolume(i)));
                head.Add((byte)(fileManager.GetVolume(i) >> 8));
                int length = fileManager.GetLengthAddress(i);
                if (length < 1)
                {
                    head.Add(0);
                    head.Add(0);
                    head.Add(0);
                    head.Add(0);
                }
                else
                {
                    ushort stAdr = (ushort)(ptr >> 8);
                    ptr += length - 1;
                    ushort edAdr = (ushort)(ptr >> 8);
                    ptr++;
                    head.Add((byte)(stAdr));
                    head.Add((byte)(stAdr >> 8));
                    head.Add((byte)(edAdr));
                    head.Add((byte)(edAdr >> 8));
                }
            }
            return(head);
        }