예제 #1
0
        public MetaEventText(int aDelta, byte aType, AByteArray byteArray)
            : base(aDelta, aType)
        {
            int length = MtrkChunk.GetVariableLengthByte(byteArray);

            text = byteArray.ReadString(length);
        }
예제 #2
0
        public ShdrData(AByteArray aByteArray, List <string> aInformationList)
        {
            sampleName      = aByteArray.ReadString(20);
            start           = aByteArray.ReadUInt32();
            end             = aByteArray.ReadUInt32();
            startLoop       = aByteArray.ReadUInt32();
            endLoop         = aByteArray.ReadUInt32();
            sampleRate      = aByteArray.ReadUInt32();
            originalPitch   = aByteArray.ReadByte();
            pitchCorrection = aByteArray.ReadSByte();
            sampleLink      = aByteArray.ReadUInt16();
            sampleType      = ( SampleType )aByteArray.ReadUInt16();

            aInformationList.Add("Sample Name:" + sampleName);
            aInformationList.Add("Start:" + start);
            aInformationList.Add("End:" + end);
            aInformationList.Add("Start Loop:" + startLoop);
            aInformationList.Add("End Loop:" + endLoop);
            aInformationList.Add("Sample Rate:" + sampleRate);
            aInformationList.Add("Original Pitch:" + originalPitch);
            aInformationList.Add("Pitch Correction:" + pitchCorrection);
            aInformationList.Add("Sample Link:" + sampleLink);
            aInformationList.Add("Sample Type:" + sampleType);

            if (sampleType != SampleType.monoSample)
            {
                Logger.Warning(sampleName + "/" + "Not Mono Sample:" + sampleType);
            }
        }
예제 #3
0
        private void ReadChunk(AByteArray aByteArray)
        {
            string lId = aByteArray.ReadString(4);

            UInt32 lSize = aByteArray.ReadUInt32();

            int lPositionStart = aByteArray.Position;

            // Check Padding.
            if (lSize % 2 == 1)
            {
                if (lPositionStart + lSize <= aByteArray.Length && aByteArray.ReadByte(( int )(lPositionStart + lSize)) == 0x00)
                {
                    lSize++;

                    Logger.Debug("Padding:" + lSize);
                }
                else
                {
                    Logger.Debug("No Padding:" + lSize);
                }

                aByteArray.SetPosition(lPositionStart);
            }

            FormChunk lRiffWave = Construct(lId, lSize, aByteArray, this);

            chunkList.Add(lRiffWave);

            if (aByteArray.Position != lPositionStart + lSize)
            {
                Logger.Debug("Modify Position:" + aByteArray.Position + "->" + (lPositionStart + lSize));
                aByteArray.SetPosition(( int )(lPositionStart + lSize));
            }
        }
예제 #4
0
        public RiffInfoIsrc(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            source = aByteArray.ReadString(( int )Size);

            informationList.Add("Source:" + source);
            Logger.BreakDebug("Source:" + source);
        }
예제 #5
0
        public RiffInfoIsng(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            unknown = aByteArray.ReadString(( int )Size);

            informationList.Add("Unknown:" + unknown);
            Logger.BreakDebug("Unknown:" + unknown);
        }
예제 #6
0
        public RiffInfoItch(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            technician = aByteArray.ReadString(( int )Size);

            informationList.Add("Technician:" + technician);
            Logger.BreakDebug("Technician:" + technician);
        }
예제 #7
0
        public RiffInfoIkey(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            keywords = aByteArray.ReadString(( int )Size);

            informationList.Add("Keywords:" + keywords);
            Logger.BreakDebug("Keywords:" + keywords);
        }
예제 #8
0
        public RiffInfoIprd(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            product = aByteArray.ReadString(( int )Size);

            informationList.Add("Product:" + product);
            Logger.BreakDebug("Product:" + product);
        }
예제 #9
0
        public RiffInfoIcop(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            corporation = aByteArray.ReadString(( int )Size);

            informationList.Add("Corporation:" + corporation);
            Logger.BreakDebug("Corporation:" + corporation);
        }
예제 #10
0
        // MIDIヘッダを読み込む.
        private void ReadMidiHeader(AByteArray byteArray)
        {
            string lId   = byteArray.ReadString(4);
            UInt32 lSize = byteArray.ReadUInt32();

            mthdChunk = new MthdChunk(lId, ( int )lSize);
            mthdChunk.Read(byteArray);
        }
예제 #11
0
        public InstData(AByteArray aByteArray, List <string> aInformationList)
        {
            name   = aByteArray.ReadString(20);
            bagNdx = aByteArray.ReadUInt16();

            aInformationList.Add("name:" + name);
            aInformationList.Add("Bag Ndx:" + bagNdx);
        }
예제 #12
0
        public RiffInfoIart(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            artist = aByteArray.ReadString(( int )Size);

            informationList.Add("Artist:" + artist);
            Logger.BreakDebug("Artist:" + artist);
        }
예제 #13
0
        public RiffInfoIeng(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            engineer = aByteArray.ReadString(( int )Size);

            informationList.Add("Engineer:" + engineer);
            Logger.BreakDebug("Engineer:" + engineer);
        }
예제 #14
0
        public RiffInfoIgnr(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            genre = aByteArray.ReadString(( int )Size);

            informationList.Add("Genre:" + genre);
            Logger.BreakDebug("Genre:" + genre);
        }
예제 #15
0
        public RiffInfoIcrd(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            creationDate = aByteArray.ReadString(( int )Size);

            informationList.Add("Creation Date:" + creationDate);
            Logger.BreakDebug("Creation Date:" + creationDate);
        }
예제 #16
0
        public RiffWaveNote(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            name = aByteArray.ReadUInt32();
            data = aByteArray.ReadString(( int )Size - 4);

            informationList.Add("    Name:" + name);
            informationList.Add("    Data:" + data);
        }
예제 #17
0
        public RiffWaveBext(string aId, UInt32 aSize, AByteArray aByteArray, RiffChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            description         = aByteArray.ReadString(256);
            originator          = aByteArray.ReadString(32);
            originatorReference = aByteArray.ReadString(32);
            originationDate     = aByteArray.ReadString(10);
            originationTime     = aByteArray.ReadString(8);
            timeReferenceLow    = aByteArray.ReadUInt32();
            timeReferenceHigh   = aByteArray.ReadUInt32();
            version             = aByteArray.ReadUInt16();
            umid          = aByteArray.ReadBytes(64);
            reserved      = aByteArray.ReadBytes(190);
            codingHistory = aByteArray.ReadString(( int )(Size - 256 - 32 - 32 - 10 - 8 - 4 - 4 - 2 - 64 - 190));

            informationList.Add("Description:" + description);
            informationList.Add("Originator:" + originator);
            informationList.Add("Originator Reference:" + originatorReference);
            informationList.Add("Origination Date:" + originationDate);
            informationList.Add("Origination Time:" + originationTime);
            informationList.Add("Time Reference Low:" + timeReferenceLow.ToString());
            informationList.Add("Time Reference High:" + timeReferenceHigh.ToString());
            informationList.Add("Version:" + version.ToString());
            informationList.Add("UMID:" + umid.ToString());
            informationList.Add("Reserved:" + reserved.ToString());
            informationList.Add("Coding History:" + codingHistory);
        }
예제 #18
0
        // MIDIトラックを読み込む.
        private void ReadMidiTrack(AByteArray byteArray)
        {
            mtrkChunkArray = new MtrkChunk[mthdChunk.GetTracks()];

            for (int i = 0; i < mthdChunk.GetTracks(); i++)
            {
                string lId   = byteArray.ReadString(4);
                UInt32 lSize = byteArray.ReadUInt32();

                mtrkChunkArray[i] = new MtrkChunk(lId, ( int )lSize);
                mtrkChunkArray[i].Read(byteArray);
            }
        }
예제 #19
0
        public FormAiffSsnd(string aId, UInt32 aSize, AByteArray aByteArray, FormChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            offset    = aByteArray.ReadUInt32();
            blockSize = aByteArray.ReadUInt32();
            comment   = aByteArray.ReadString(( int )offset);

            dataSize = ( int )(Size - offset - 8);
            aByteArray.AddPosition(dataSize);

            informationList.Add("Offset:" + offset);
            informationList.Add("Block Size:" + blockSize);
            informationList.Add("Comment:" + comment);
        }
예제 #20
0
        public CuePoint(AByteArray aByteArray, List <string> aInformationList)
        {
            name         = aByteArray.ReadUInt32();
            position     = aByteArray.ReadUInt32();
            chunk        = aByteArray.ReadString(4);
            chunkStart   = aByteArray.ReadUInt32();
            blockStart   = aByteArray.ReadUInt32();
            sampleOffset = aByteArray.ReadUInt32();

            aInformationList.Add("    Name:" + name);
            aInformationList.Add("    Position:" + position);
            aInformationList.Add("    Chunk:" + chunk);
            aInformationList.Add("    Chunk Start:" + chunkStart);
            aInformationList.Add("    Block Start:" + blockStart);
            aInformationList.Add("    Sample Offset:" + sampleOffset);
        }
예제 #21
0
        public PhdrData(AByteArray aByteArray, List <string> aInformationList)
        {
            name       = aByteArray.ReadString(20);
            preset     = aByteArray.ReadUInt16();
            bank       = aByteArray.ReadUInt16();
            bagNdx     = aByteArray.ReadUInt16();
            library    = aByteArray.ReadUInt32();
            genre      = aByteArray.ReadUInt32();
            morphology = aByteArray.ReadUInt32();

            instrumentList = new List <UInt16>();

            aInformationList.Add("Name:" + name);
            aInformationList.Add("Preset:" + preset);
            aInformationList.Add("Bank:" + bank);
            aInformationList.Add("Bag Ndx:" + bagNdx);
            aInformationList.Add("Library:" + library);
            aInformationList.Add("Genre:" + genre);
            aInformationList.Add("Morphology:" + morphology);
            aInformationList.Add("End Of Presets:" + endOfPresets);
        }
예제 #22
0
        protected FormChunkList(string aId, UInt32 aSize, AByteArray aByteArray, FormChunkList aParent)
            : base(aId, aSize, aByteArray, aParent)
        {
            chunkList          = new List <FormChunk>();
            listListDictionary = new Dictionary <string, List <FormChunkList> >();

            type = aByteArray.ReadString(4);

            try
            {
                while (aByteArray.Position < position + aSize)
                {
                    ReadChunk(aByteArray);
                }
            }
            catch (Exception aExpection)
            {
                Logger.Error("Expection at Form Read:" + aExpection.ToString());
            }

            aByteArray.SetPosition(( int )(position + aSize));
        }
예제 #23
0
 public FormAiffForm(AByteArray aByteArray)
     : base(aByteArray.ReadString(4), aByteArray.ReadUInt32(), aByteArray, null)
 {
     name = aByteArray.GetName();
 }
예제 #24
0
 public RiffChunkListSfbk(AByteArray aByteArray)
     : base(aByteArray.ReadString(4), aByteArray.ReadUInt32(), aByteArray, null)
 {
     name = aByteArray.GetName();
 }
예제 #25
0
 public RiffWaveRiff(AByteArray aByteArray)
     : base(aByteArray.ReadString(4), aByteArray.ReadUInt32(), aByteArray, null)
 {
     name = aByteArray.GetName();
 }