public void ShiftPitch(int val) { var root_gene = this.Gene as NoteGene; root_gene.ShiftPitch(val); if(this.Children != null) { foreach(var c in this.Children) { if (c == null) continue; c.ShiftPitch(val); } } }