public XACTPatch(ContentReader input) { try { input.ReadByte(); char[] header = input.ReadChars(4); if ( string.Compare( new string(header), "S**T" ) != 0 ) throw new Exception( "Caught Exception: Binary not in S**T format!" ); int count = input.ReadInt32(); if ( count > 128 ) count = 128; // Cap the maximum number of instruments for ( uint i = 0; i < count; ++i ) { _InstrumentInfo info = new _InstrumentInfo(); info.Name = input.ReadString(); byte flags = input.ReadByte(); info.Repeat = false; info.StretchRange = false; if ((flags & 0x80) > 0) info.Repeat = true; //if repeat if ((flags & 0x40) > 0) info.StretchRange = true; //if range int patchNumber = (int)(flags & 0x0F); //info.PatchNumber = (byte)(flags & 0x0F); info.AttackSpeed = input.ReadByte(); info.ReleaseSpeed = input.ReadByte(); m_Instruments[patchNumber] = info; } } catch(Exception e) { Console.WriteLine(e.Message); } }