Le premier problème serait de décider quelle est la note fondamentale, sinon, comme le dit Kurto, vous obtiendrez plusieurs réponses pour un ensemble de lettres de note.
L'ordre des lettres importerait-il? Peut-être pourriez-vous adopter une règle selon laquelle la première lettre est toujours la racine?
En supposant que vous vous y attaquiez d'une manière ou d'une autre (ou que vous acceptiez simplement plusieurs réponses), vous pourriez ...
Attribuer un numéro à chaque lettre (vous acceptez probablement les dièses et les bémols aussi?) et utilisez cela pour calculer l'intervalle entre les notes, en demi-tons, par exemple ce que nous appelons un 4ème = de A à D fait en fait 5 demi-tons.
Vous pouvez ensuite utiliser les intervalles pour faire correspondre un ensemble de modèles d'accords connus à la note fondamentale:
CEG comme dans votre exemple, en demi-tons = 1-4-7 = [note de racine] major = le modèle relatif pour une triade majeure.
Do Eb G = 1-3-7 = motif pour accord mineur.
1-4-7-10 = Cmaj 7
Chaque fois que vous signalez simplement la note fondamentale avec un commentaire sur l'organisation du reste des notes. La limitation serait là où un accord est perçu mais la note fondamentale est manquante - mais cela pourrait être interprété comme un autre accord de toute façon.
Plus vous identifiez de modèles de motif, mieux cela deviendra mais vous seulement besoin de les définir par rapport à une note fondamentale en nombres de demi-tons.
Si quelque chose ne correspond à aucun des motifs (peut-être que vous n'en avez pas défini un pour l'accord A4), vous écrivez simplement le retour de la note fondamentale avec un supplément numéro de note (pas un demi-ton).
Il vous faut donc
- un moyen de convertir toutes les lettres (dièses et bémols) en nombres = une table de recherche / un tableau associatif
- un moyen d'identifier la note fondamentale
- un moyen d'identifier les intervalles de toutes les lettres de la note fondamentale = transformer en nombres et soustraire le numéro de note fondamentale. Module par 13 pour le maintenir à 1 octave (ou pas si vous voulez être plus avancé et gérer les intervalles négatifs, pour les notes sous la note fondamentale)
- un moyen de définir des modèles de motifs pour les accords connus, avec un nom texte associé
- un moyen de comparer des nombres de demi-tons à des motifs (= une comparaison de tableaux)
- un moyen de transformer des intervalles de demi-tons en numéros de notes (par exemple 5 demi-tons = 4e note sur l'échelle) afin que vous puissiez renvoyer des choses comme A4
Si vous souhaitez renvoyer toutes les possibilités pour un ensemble de notes, vous pouvez renvoyer le résultat de votre routine, en utilisant chaque note de l'accord comme racine, tour à tour.
Je pense debout ici mais je pense que c'est comme ça que je procéderais.