示例#1
0
        public bool LoadSeq(ref Sequences seqs)
        {
            short i, j;
            int   size;
            byte  b;

            byte[] buffer = new byte[256];
            short  m16_32;

            if (sizes[2] > seqs.n)
            {
                return(false);
            }
            int[] s_offsets = new int[sizes[2] + 1 + 1];    // seq-Offsets

            seqs.clear();

            switch (type1)
            {
            case "COSO":
            case "MMME":
            {
                readOffsets(offsets[2], ref s_offsets, sizes[2]);
                s_offsets[sizes[2] + 1] = offsets[3];         // end of last seq is start of tracks
                break;
            }

            case "TFMX":
            {
                fs.Position = 32 + 64 * (sizes[0] + 1) + 64 * (sizes[1] + 1);
                for (i = 0; i <= sizes[2] + 1; i++)           // seqs always 64 Bytes long
                {
                    s_offsets[i] = i * 64;
                }
                break;
            }
            }

            for (i = 0; i <= sizes[2]; i++)
            {
                for (j = 0; j <= s_offsets[i + 1] - s_offsets[i] - 1; j++)
                {
                    b = br.ReadByte();
                    // seqs.Seq(i, j) = b
                    buffer[j] = b;
                }
                seqs.depack(i, buffer);
            }

            // If type1 = "TFMX" Then
            // seqs.compress(sizes(2))
            // End If

            return(true);
        }
示例#2
0
        public void init(string f, ref Instruments i, ref Sequences se, ref Shapes sh, ref Tracks t)
        {
            switch (f)
            {
            case "TFMX":
            {
                ftype = _fType.TFMX;
                break;
            }

            case "MMME":
            {
                ftype = _fType.MMME;
                break;
            }
            }
            instr = i;
            seq   = se;
            shape = sh;
            track = t;
        }