Parabéns pelo artigo! Conteúdo muito bom.
Um questionamento sobre o código: por que você decidiu criar um estrutura para cada parte do wave? Da forma que fez, para representar o wave tenho que instânciar 4 estruturas diferentes.
Não seria mais legível ter apenas um estrutura que representa o wave completo? Dentro desta estrutura poderia ter todos os campos, inclusive outras estruturas, se necessário.