internal profileSequenceIdentifierTagDataEntry(int idx)
 {
     //Count, specifying number of structures in the array (4 bytes)
     NumberCount = (int)Helper.GetUInt32(idx);
     //Positions table for profile identifiers
     PositionTable = new PositionNumber[NumberCount];
     int end = idx + 4 + 8 * NumberCount; int c = 0;
     for (int i = idx + 4; i < end; i += 8) { PositionTable[c] = new PositionNumber(i); c++; }
     //Profile ID (16 bytes)
     ProfileID = Helper.GetProfileID(end);
     //Profile description
     ProfileDescription = new multiLocalizedUnicodeTagDataEntry(end + 16, false);
 }
 internal multiProcessElementsTagDataEntry(int idx)
 {
     //Number of input channels (2 bytes)
     InputChannelCount = Helper.GetUInt16(idx);
     //Number of output channels (2 bytes)
     OutputChannelCount = Helper.GetUInt16(idx + 2);
     //Number of processing elements (4 bytes)
     ProcessingElementCount = (int)Helper.GetUInt32(idx + 4);
     //Process element positions table (8 bytes each)
     PositionTable = new PositionNumber[ProcessingElementCount];
     int end = idx + 8 + 8 * ProcessingElementCount; int c = 0;
     for (int i = idx + 8; i < end; i += 8) { PositionTable[c] = new PositionNumber(i); c++; }
     //Data
     Data = new MultiProcessElement[ProcessingElementCount];
     for (int i = 0; i < ProcessingElementCount; i++) { Data[i] = MultiProcessElement.CreateElement(PositionTable[i].Offset); }
 }