Es scheint zu funktionieren, allerdings weiß ich nicht so recht, wo man das brauchen kann... außer natürlich als die Programmierübung, um die es hier offenbar ging.
Unter Programmieraspekten kann ich das Ergebnis leider nicht beurteilen, weil sich mir bisher diese Tiefen von Scheme nicht erschlossen haben.
Andere Kommentare, nach kurzem, unsysthematischen Herumprobieren - aber bitte nicht falsch verstehen, vielleicht waren die gar nicht in deinem Fokus:
Anwendersicht:
- Wer "c e" in einer bestimmten Oktav eingibt, würde den Akkord auch gerne in einer Lage sehen, wo die eingegebenen Töne in der originalen Oktave erscheinen.
- Wie ist es gemeint? Zeigt das Ergebnis [1] zugrundeliegende Harmonien, die man als Analyseergebnis annehmen darf, wenn NUR diese beiden Töne klingen, oder [2] mögliche Harmonisierungen, die diese Töne enthalten?
Musiktheoretische Sicht:
- Du solltest eine konsistente Bezeichungstheorie verwenden, nicht verschiedene durcheinander.
- Die Akkorde "C 78" und "C4 sus 4 3" gibt es nicht.
- Akkorde mit großer Septime ("C7j") fehlen.
- Andere Akkorde sind falsch ("c e g a" müsste entweder als "C 56" [Generalbass] oder als "am7" [Jazz-Harmonik] bezeichnet werden, nicht als "C 6"; "C sus 2" hat nicht nur zwei Töne).
- c' g' bringt ganz andere Ergebnisse als g' c''. Das ist nur richtig, wenn oben [1] gemeint war.
Gruß,
--ingmar