public override void RevertChanges()
 {
     TracksTabViewModel.RevertChanges();
     RhythmViewModel.RevertChanges();
     NameViewModel.RevertChanges();
     MasterViewModel.RevertChanges();
     RecOptionViewModel.RevertChanges();
     PlayOptionViewModel.RevertChanges();
     AssignsTabViewModel.RevertChanges();
     InputFxTabViewModel.RevertChanges();
     TrackFxTabViewModel.RevertChanges();
 }
 public override void ApplyChanges <T>(T model)
 {
     if (model is MemoryModel memory)
     {
         TracksTabViewModel.ApplyChanges(memory);
         RhythmViewModel.ApplyChanges(memory.Rhythm);
         NameViewModel.ApplyChanges(memory.Name);
         MasterViewModel.ApplyChanges(memory.Master);
         RecOptionViewModel.ApplyChanges(memory.RecOption);
         PlayOptionViewModel.ApplyChanges(memory.PlayOption);
         AssignsTabViewModel.ApplyChanges(memory);
         InputFxTabViewModel.ApplyChanges(memory);
         TrackFxTabViewModel.ApplyChanges(memory);
     }
     else
     {
         throw new ArgumentException("Model must be of type MemoryModel.");
     }
 }