Per me è palese il perchè. ![]()
E' una questione di leggibilità del codice.
Se io devo comporre degli accordi e ci metto dentro dei numeri, non sapro' mai se quel numero che ho messo dentro è la nota corretta che deve suonare in quell'accordo.
Io ho tanti define come nell'esempio che hai postato per avere le frequenze di ogni nota (in int pero' , perchè avevo letto che il tone accetta solo interi)
Poi ho 3 buzzer.
Ognuno di essi riproduce una nota diversa che forma un accordo.
Se io ho un accordo di DO, dovro' suonare DO, MI e SOL sui 3 buzzer.
Quindi voglio che ci sia un array col nome DO che contenga le 3 note che compongono l'accordo. Certo che potrei mettere direttamente i numeri, ma io voglio essere sicuro di aver inserito le note giuste da suonare.
Per questo pensavo di fare:
int CH_DO4 [] = {DO4,MI4,SOL4} e aspettarmi che i 3 define corrispondenti mi sostituiscano i nomi delle note con i valori numerici.
poi nella parte di riproduzione metterei i tre tone, uno per ogni frequenza.