internal override IEnumerable <DataValidationError> Load(DataSegment segment) { var indexValue = segment.ReadInt32(Offset, NumericCodec.Range32); var bankValue = (InstrumentBank)segment.ReadInt32(SchemaField.BankOffset, NumericCodec.Range8); if (bankValue == InstrumentBank.Preset && indexValue >= 0 && indexValue < Schema.PresetInstruments.Count) { Instrument = Schema.PresetInstruments[indexValue]; return(DataValidationError.None); } else if (bankValue == InstrumentBank.UserSamples && indexValue >= 0 && indexValue < Schema.UserSampleInstruments.Count) { Instrument = Schema.UserSampleInstruments[indexValue]; return(DataValidationError.None); } else { return(new[] { new DataValidationError(this, $"Invalid instrument field bank/index combination: {bankValue}/{indexValue}") }); } }
internal override void Load(DataSegment segment) { index = segment.ReadInt32(Offset, Size); bank = (InstrumentBank)segment.ReadInt32(SchemaField.BankOffset, 1); }