public void Tick()
 {
     Phase += Freq;
     Origin = ParentHarmonic?.End ?? Origin;
     OnPropertyChanged("Origin");
     OnPropertyChanged("End");
     SubHarmonic?.Tick();
 }
        public IEnumerable <Harmonic> ListHarmonics()
        {
            var list = new List <Harmonic>();

            list.Add(this);
            if (SubHarmonic != null)
            {
                list.AddRange(SubHarmonic.ListHarmonics());
            }
            return(list);
        }