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; }