Da quanto ho capito, la quinta viene generata aggiungendo sempre sette al numero di nota MIDI e la terza viene generata aggiungendo quattro.
Corretto, anche più specificamente, la quinta perfetta viene generata aggiungendo sempre sette al numero di nota MIDI e la terza maggiore viene generata aggiungendo quattro.
Tuttavia , Non penso che funzioni così perché l'aggiunta di un numero fisso risulterà in una triade maggiore o minore a seconda della nota iniziale.
Non preoccuparti, funziona così - iniziando con una nota fondamentale e aggiungendo intervalli con un numero fisso di semitoni , che è ciò che rappresentano i numeri di nota MIDI, risulterà sempre nello stesso accordo.
Quando parli di "maggiore o minore a seconda della nota iniziale", forse stai pensando a intervalli tra i gradi della scala diatonica, come "una terza", che può avere dimensioni diverse. Ad esempio, sulla scala maggiore, la terza tra i gradi 1 e 3 è una terza maggiore e la terza tra 2 e 4 è una terza minore. Un altro modo di vedere questo è che la scala diatonica "salta" alcune note nella scala cromatica, motivo per cui ottieni diversi numeri di semitoni e perché le triadi basate su diversi gradi di una scala maggiore sono a volte maggiori, a volte minori.
Ma i numeri di nota MIDI non sono basati sui gradi della scala diatonica - sono puramente numeri di semitoni. La formula per ogni tipo di accordo in termini di numero di semitoni è sempre la stessa.
C'è un modo per generare tutte le triadi maggiori (o minori) per una data nota fondamentale?
Hai già la formula per generare le triadi principali. Per le triadi minori, aggiungi 3 per ottenere la terza minore e 7 per ottenere la quinta perfetta.
Non sono sicuro di quale sia il tuo caso d'uso per la generazione di tutti gli accordi maggiori o minori, ma tieni presente che una tonalità minore non utilizza sempre accordi minori e una tonalità maggiore non utilizza sempre accordi maggiori!
Per aggiungere ulteriori informazioni. Il mio controller esce nella tonalità di Do maggiore. Per trasporlo a qualsiasi tonalità aggiungo un numero costante alle note MIDI. Inoltre, quando sono in questa tonalità, voglio un interruttore per dare la possibilità di generare una triade minore o una triade maggiore insieme alla nota suonata. Pertanto credo di dover considerare la distanza della nota suonata rispetto alla nota fondamentale della tonalità in cui mi trovo.
Quindi tutto ciò che abbiamo detto finora su come generare accordi maggiori e minori è corretto, ma se ho capito bene, vuoi anche generare l'accordo "giusto" in base al grado della scala. Per fare ciò, dobbiamo fare alcune ipotesi su quali siano gli accordi "giusti", ma un punto di partenza comune nella musica occidentale è assumere gli accordi diatonici della scala.
Dici che sai che il tuo controller emette sempre nella tonalità di Do maggiore, quindi potresti risparmiarti un po 'di logica se risolvi gli accordi a quel punto, perché sai che la' nota fondamentale 'della scala è C - nota midi 60, che è, facilmente, anche un multiplo del numero di semitoni nell'ottava cromatica.
Supponiamo di utilizzare la scala maggiore, in modo da voler generare gli accordi diatonici della scala maggiore.
se (numero nota% 12) = 0, suoni un accordo maggiore.
if (numero nota% 12) = 2, suoni un accordo minore.
if ( nota numero% 12) = 4, suoni un accordo minore.
se (nota numero% 12) = 5, suoni un accordo maggiore.
se (nota numero% 12) = 7, suoni una maggiore accordo.
se (numero nota% 12) = 9, suoni un accordo minore.
se (numero nota% 12) = 11, suoni un d finito accordo (fondamentale, fondamentale + 3, fondamentale + 6)
Da quel punto, puoi eseguire la trasposizione generale per spostare l'output sulla chiave giusta.
Ovviamente questo lascia ancora alcune domande senza risposta. Avrai un modo separato in cui il musicista può indicare le tonalità minori, o dovrà solo impostare adeguatamente la trasposizione e suonare partendo da LA? E se un musicista suona una nota che non è nella scala diatonica, o vuole un accordo che non è nella serie diatonica di accordi? Non ci sono risposte "corrette" a queste domande: dovrai trovare il giusto equilibrio tra flessibilità e facilità d'uso.