private Sf2Region[][] ReadSf2Instruments(Instrument[] instruments)
 {
     Sf2Region[][] regions = new Sf2Region[instruments.Length][];
     for (int x = 0; x < regions.Length; x++)
     {
         Generator[] globalGens = null;
         int i;
         if (instruments[x].Zones[0].Generators.Length == 0 ||
             instruments[x].Zones[0].Generators[instruments[x].Zones[0].Generators.Length - 1].GeneratorType != GeneratorEnum.SampleID)
         {
             globalGens = instruments[x].Zones[0].Generators;
             i = 1;
         }
         else
             i = 0;
         regions[x] = new Sf2Region[instruments[x].Zones.Length - i];
         for (int j = 0; j < regions[x].Length; j++)
         {
             Sf2Region r = new Sf2Region();
             r.ApplyDefaultValues();
             ReadSf2Region(r, globalGens, instruments[x].Zones[j + i].Generators, false);
             regions[x][j] = r;
         }
     }
     return regions;
 }