Eska: Javascript Arrays Novizen Frage

Hallo, hatte heute Nacht eine spontane Idee für ein kleines "Programm" und dachte eigentlich, dass das ziemlich schnell umsetzbar sein müsste. Heute Morgen hat mich dann allerdings die Realität eingeholt, und ich hab gemerkt, dass ich seit min. 15 Jahren weder Html noch PhP oder sonsts was geschrieben habe und meine Wissenslücken immens geworden sind (und meine Javascriptkentnisse schon vor 15 Jahren eher bescheiden waren). Aus meiner aktiven Zeit habe ich mich an das Forum hier erinnert und das hier immer schnell, gut und gerne geholfen wurde und hoffe darauf, das sich das nicht verändert hat 😉

Also ich habe zwei Arrays ein einfaches:

array1=[a,b,c,d,e,f,g,h,i,j,k,...]

und ein Mehrdimensionals(?):

array2=["name1", "0,1,3,2,1,1,2"
"name2", "0,2,1,1,2,2,1,1,2"
"name3", "0,1,2,2,1,1,2"
...]

ich brauche zwei Dropdowns

  1. aus array1 alle Werte -> Auswahl Startwert
  2. aus array2 "Name" -> Auswahl Sequenz

Die Ausgabe soll dann aus Array1 erfolgen ab Startwert die Werte in Reihenfolge der aus array2 gewählten Sequenz (Also z.B. wert[0], wert[letzter Wert+1], wert[lezter Wert+2] etc.: a,b,d,etc.

Wie gesagt mit javascript bin ich schon immer auf dem Kriegsfuß gestanden und habe meine Probleme hauptsächlich mit Datenbank und PHP gelöst - habe aber das gefühl, dass es hier mit "Kanonen auf Spatzen schießen" wäre dafür extra eine Datenbank anzulegen und dachte Javascript wäre hierfür die schlankeste Lösung (lass mich aber gerne eine besseren belehren).

Ich kann die beiden Arrays definieren, denke, dass ich die Ausgabe vermutlich auch hinbekomme - wobei wie kann ich erklären, dass die Zahlenkette im Array2 die Steps zum auslesen von Array 1 sind? - wäre es z.B. besser ein drittes Array anzulegen, dass nur die "Sequenz" enthält und mit dem "Namen" Array nur ausgewählt wird welche Instanz von Array3 aufgerufen wird?

Bei mir scheitert es schon am Basic: wie erstelle ich das Drop-Down aus den beiden Arrays und bestimme, dass die getroffene Auswahl den Startpunkt ergeben?

Gibt es eine besser geeignete Herangehensweise, bessere/einfachere Scriptsprache die man nutzen könnte/sollte?

Wäre klasse wenn ihr mir helfen könntet - entweder Codeschnipsel (JUHU) oder Verweis wo ich suchen muss. Wollte eigentlich nicht mehr aktiv in die HTML/PHP/JAVASCRIPT Welt einsteigen und das den Profis überlassen, aber so kleine Problemchen würde ich schon noch gerne lösen können. Echt heftig wieviel man vergisst...

Danke für jeden Tip!

  1. @@Eska

    Also ich habe zwei Arrays ein einfaches:

    array1=[a,b,c,d,e,f,g,h,i,j,k,...]
    

    und ein Mehrdimensionals(?):

    array2=["name1", "0,1,3,2,1,1,2"
    "name2", "0,2,1,1,2,2,1,1,2"
    "name3", "0,1,2,2,1,1,2"
    ...]
    
    

    Ich hab den Code mal als solchen formatiert; die fehlenden Kommas aber nicht ergänzt.

    Und nö, das ist auch ein einfaches Array. Und eine schlechte Datenstruktur.

    Ein mehrdimensionales Array sähe so aus:

    const array2 = [
      [ "name1", [0,1,3,2,1,1,2] ],
      [ "name2", [0,2,1,1,2,2,1,1,2] ],
      [ "name3", [0,1,2,2,1,1,2] ],
    ];
    

    Das ist aber immer noch eine schlechte Datenstruktur. Vernünftig wäre ein Array von Objekten:

    const array2 = [
      { name: "name1", value: [0,1,3,2,1,1,2] },
      { name: "name2", value: [0,2,1,1,2,2,1,1,2] },
      { name: "name3", value: [0,1,2,2,1,1,2] },
    ];
    

    ich brauche zwei Dropdowns …

    Aus deiner Problembeschreibung werde ich nicht schlau. Kannst du das mal mit einem Beispiel verständlich machen?

    🖖 Живіть довго і процвітайте

    --
    When the power of love overcomes the love of power the world will know peace.
    — Jimi Hendrix
    1. Hallo Gunnar, vielen Dank schon mal, dass du die Datenstruktur korregiert hast - ganz klar, so sollte das zweite Array aussehen, danke!

      nachdem du Jimi Hendrix in deiner Signatur hast 😉, ein Beispiel für das Projekt wären Tonleitern :

      array1=[c,c#-db,d,d#-eb,e,f,f#-gb,g,g#-ab,a,a#-bb,b,c,c#-db,d,d#-eb,e,f,f#-gb,g,g#-ab,a, a#-bb,b,]
      

      Mir ist klar, dass die Doppellung der Werte nicht wirklich nötig ist, aber zusätzlich noch ein Modulus Abfrage kommt dann später 😉 - würde halt im Dropdown die Auswahl auf die ersten 12 Werte beschränken.

      const array2 = [
        { name: "Dur", value: [2,2,1,2,2,2,1] },
        { name: "Moll", value: [2,1,2,2,1,2,2] },
        { name: "Pentatonik", value: [2,2,3,2,3] },
        { name: "Dorian", value: [2,1,2,2,2,1,2] },
      ];
      

      Dropdown1 aus array1

      Dropdown2 aus array2

      wähle aus Dropdown1 den Startpunk z.B. "c" also Wert array1[0]

      wähle aus Dropdown2 die Sequenz z.B. Dur

      var i=0; //Startwert

      var j=0; //erster Wert in Array2

      dann müsste wohl eine while Schleife oder ein "foreach in array2" starten für die Ausgabe, die mir die Werte wie folgt ausgibt

      {

      echo array1[i]; // ist es hier besser für die Ausgabe consol.log oder ausgabe.innerHTML zu verwenden? echo hatte ich immer in PHP verwendet, klar, dass das hier ncht zum Einsatz kommt...

      i=i+array2[j];

      j++;

      }

      Ausgabe würde dann so aussehen (klar, Leerzeichen, Bindestrich o.ä. müßte ich noch in die Ausgabe einbinden...)

      c d e f g a b c

      Noch eine Frage, bei Array2 ist es egal, wenn die Werte unterschiedliche Längen haben also mal 5 Werte, mal 12 Werte in einer Zeile sind, oder?

      Danke für die Hilfe!

      1. @@Eska

        nachdem du Jimi Hendrix in deiner Signatur hast 😉, ein Beispiel für das Projekt wären Tonleitern :

        array1=[c,c#-db,d,d#-eb,e,f,f#-gb,g,g#-ab,a,a#-bb,b,c,c#-db,d,d#-eb,e,f,f#-gb,g,g#-ab,a, a#-bb,b,]
        

        Mir ist klar, dass die Doppellung der Werte nicht wirklich nötig ist

        Hehe, ein Cis ist doch aber was anderes als ein Des! (ping @Felix Riesterer)

        Und was nötig ist: ' oder " um die Strings.

        Und es gibt auch ♯ und ♭ in Unicode:

        array1=['c','c♯-d♭','d','d♯-e♭','e','f','f♯-g♭','g','g♯-a♭','a','a♯-b♭','b','c','c♯-d♭','d','d♯-e♭','e','f','f♯-g♭','g','g♯-a♭','a',' a♯-b♭','b',]
        

        🖖 Живіть довго і процвітайте

        --
        When the power of love overcomes the love of power the world will know peace.
        — Jimi Hendrix
        1. Hehe, ein Cis ist doch aber was anderes als ein Des! (ping @Felix Riesterer)

          das stimmt wohl, aber um die enharmonischen Verwechselungen wollte ich mich später kümmern 😉 - erstmal schauen, dass das Ganze läuft. Wenn Du eine gute Idee hast wie man das Problem lösen kann (und dann auch die Sache mit ## und bb) immer gerne...

          Und es gibt auch ♯ und ♭ in Unicode:

          oh cool, da habe ich gar nicht nach geschaut... gut zu wissen

          wenn Du mir jetzt noch sagst, dass man die Noten auf Notenlinien ausgeben kann - also nicht als Buchstabenreihe - wow... 😁

          aber wie gesagt, ich muss erstmal schauen, dass ich das Script zusammenbastle.... vermute aber, dass ich das wohl doch nicht hinbekomme, meine Wissenslücken sind einfach zu groß und ich habe nicht wirklich Zeit um mich da wieder reinzufuchsen. Schade, so ein "Scale-Creator" wäre eine nette Idee gewesen (besonders wenn man dann noch Zufall-Scales kreiert - könnte ich mir spannend vorstellen).

          Aber noch werfe ich die Flinte nicht ins Korn (könnte ja ein Bett im Kornfeld treffen) - mal schauen, ob ich irgendwie weiterkomme (notfalls bastle ich mir das doch mit PHP und SQL zusammen🙃)

          1. @@Eska

            Und es gibt auch ♯ und ♭ in Unicode:

            oh cool, da habe ich gar nicht nach geschaut... gut zu wissen

            Oh cool, die Vorzeichen gibt’s auch als benannte Entities in HTML:
            C♯ B♭ → C♯ B♭.

            wenn Du mir jetzt noch sagst, dass man die Noten auf Notenlinien ausgeben kann - also nicht als Buchstabenreihe - wow... 😁

            Man könnte eine Schriftart erstellen, in der die Glyphe für ein C kein Mond ist, sondern 5 Linien plus Hilfslinie darunter und eine Note auf dieser.

            Wie dieser Font bspw., nur mit anderer Belegung.

            &0T=T=U=V='V=U=T=S='R=R=S=T='%T=D=C=c===' – was für eine Freude. (Punktierte Noten hab ich nicht gefunden.)

            Noten: „Freude schöner Götterfunken“ aus Beethovens Neunter

            (Edit: Noten berichtigt.)

            🖖 Живіть довго і процвітайте

            --
            When the power of love overcomes the love of power the world will know peace.
            — Jimi Hendrix
            1. Oh cool, die Vorzeichen gibt’s auch als benannte Entities in HTML:
              C♯ B♭ → C♯ B♭.

              Wird ja immer besser 😀

              Man könnte eine Schriftart erstellen, in der die Glyphe für ein C kein Mond ist, sondern 5 Linien plus Hilfslinie darunter und eine Note auf dieser.

              Ok, denke das führt zu weit, für einen kleinen Gimmick...

              Wie dieser Font bspw., nur mit anderer Belegung.

              muss ich mir bei Gelegenheit mal näher anschauen.

              Hab mir das Ganze jetzt mal mit PHP zusammengeschustert (anders kann man es wohl nicht nennen) - Grundlagen funktionieren schon mal. Jetzt mal gucken wie ich das Problem mit den enharmonischen Verwechslungen gelöst bekomme und wie ich meine Zufallsskalen erstellen kann (muss ich mir mal überlegen, was für Kriterien ich ansetze). Denke für die enharmonik muss ich die Werte vergeleichen also wenn z.B. die erste Note ein C ist kann die zweite Note nicht C# sein sondern muss Db sein. Wie würde ich das vergleichen? Hast Du eine gute Idee? Irgendwas mit Explode schwirrt mir im Hinterkopf rum....

              würde das ganze trotzdem gerne in Javascript hinbekommen, aber kommt Zeit kommt Rat....

              Nochmals vielen Dank für die Hilfe!

              1. Hallo,

                Jetzt mal gucken wie ich das Problem mit den enharmonischen Verwechslungen gelöst bekomme

                wieso ist das aus deiner Sicht überhaupt ein Problem? - Okay, eins vorweg: Die in der Musik übliche Notenschreibweise ist mir immer wieder ein Graus, eben weil sie nicht umkehrbar eindeutig ist. Technisch gesehen ist C♯ und D♭ derselbe Ton, aber die Noten gehören zu verschiedenen Tonarten und Tonleitern.

                Ergibt sich also die Entscheidung, welche Notation die "richtige" ist, nicht automatisch aus der Tonart, in der die Melodie verfasst ist?

                und wie ich meine Zufallsskalen erstellen kann (muss ich mir mal überlegen, was für Kriterien ich ansetze).

                Zufallsskalen? Du willst den Computer zufällige Melodien komponieren lassen?

                Denke für die enharmonik muss ich die Werte vergeleichen also wenn z.B. die erste Note ein C ist kann die zweite Note nicht C# sein sondern muss Db sein. Wie würde ich das vergleichen? Hast Du eine gute Idee? Irgendwas mit Explode schwirrt mir im Hinterkopf rum....

                Ich würde die Toneiter der zugrundeliegenden Tonart nehmen und Noten immer bevorzugt so schreiben, wie sie darin vorkommen. Erst wenn man Halbtöne hat, die in der Basis-Tonleiter nicht vorkommen, muss man überlegen.

                Aber was sage ich da als Musik-Laie ...

                Einen schönen Tag noch
                 Martin

                --
                "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
                1. Ergibt sich also die Entscheidung, welche Notation die "richtige" ist, nicht automatisch aus der Tonart, in der die Melodie verfasst ist?

                  Klar, das ist richtig aber wenn ich die Skalen "automatisch" erzeugen lasse und nur von der Anzahl der Halbtonschritte ausgehe, kann ich nicht wirklich vorhersagen ob der Ton nun als erhöht oder vermindert dargestellt werden soll - z.B. wenn du in die Modi gehst wird es manchmal richtig vertrakt oder wenn Du verminderte Skalen anschaust - zumindest ist mir da noch keine gute Lösung eingefallen

                  und wie ich meine Zufallsskalen erstellen kann (muss ich mir mal überlegen, was für Kriterien ich ansetze).

                  Zufallsskalen? Du willst den Computer zufällige Melodien komponieren lassen?

                  Nein, ich möchte keine Melodien erzeugen lassen. (Ich hatte vor vielen, vielen Jahren mal die Idee dem Computer improvisation beizubringen. War ganz lustig, aber irgendwann wurden dann die Variablen zu viel und ich hatte nicht mehr die Zeit Berechnungen und Wahrscheinlichkeiten anzupassen - muss mal schauen ob ich das Script noch habe, hatte ich damals in Phython erstellt - da gab es mal eine schöne Schnittstelle zu Reaper, glaube die hieß earsketch wenn ich mich richtig erinnere). Die Idee hier war ganz einfach, vollkommen willkürliche Tonleitern zu erstellen, außerhalb der gängigen Strukturen - aber das ist wirklich nur ein Nebenprodukt,

                  Ich würde die Toneiter der zugrundeliegenden Tonart nehmen und Noten immer bevorzugt so schreiben, wie sie darin vorkommen. Erst wenn man Halbtöne hat, die in der Basis-Tonleiter nicht vorkommen, muss man überlegen.

                  Wie gesagt, das ist nicht immer so einfach, denke da hilft es nichts als die Bezeichnungen zu vergleichen - jeder Buchstabe als Tonbezeichnung soll nur einmal in der Tonleiter vorkommen also wenn ich ein F habe kann ich kein F# haben sondern brauche ein Gb oder wenn ich ein Eb habe kann kein E folgen sondern es muss ein Fb sein - und darauf bin ich noch gar nicht eingegangen (also auf Fb und Cb), Sh* dass muss ich auch noch irgendwie berücksichtigen

                  Für gute Ideen immer dankbar

                  Aber was sage ich da als Musik-Laie ...

                  Einen schönen Tag noch
                   Martin

                2. Hallo Martin,

                  Technisch gesehen ist C♯ und D♭ derselbe Ton

                  Verwechselst Du da nicht was?

                  Gleichstufig gestimmt hat du recht, bei reiner oder pythagoräischer Stimmung dagegen nicht.

                  Rolf

                  --
                  sumpsi - posui - obstruxi
                  1. Hi,

                    Technisch gesehen ist C♯ und D♭ derselbe Ton

                    Verwechselst Du da nicht was?

                    nein, das denke ich nicht.

                    Gleichstufig gestimmt hat du recht

                    natürlich, davon gehe ich aus: Das Frequenzverhältnis von einem Ton zum nächsthöheren Halbton ist immer die zwölfte Wurzel aus zwei. Nur so kann man auf einem Instrument die gleiche Melodie in verschiedenen Tonarten spielen, ohne dass es "schräg" klingt.

                    bei reiner oder pythagoräischer Stimmung dagegen nicht.

                    Die wäre ja auch kaputt.

                    Einen schönen Tag noch
                     Martin

                    --
                    "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
                    1. Hallo Martin,

                      Du setzt einen relativ modernen Kompromiss für Festton-Instrumente als Norm voraus. Davon abzuweichen ist nicht kaputt, nur anders. Die gleichstufige Stimmung ist wie eine Unisex-Jacke. Passt keiner und keinem zu 100%.

                      Frag mal einen Cellisten oder Violinisten nach Stimmung und Intonation.

                      Und es gab sogar mal Klaviere mit getrennten Tasten für -is und -es Töne.

                      Rolf

                      --
                      sumpsi - posui - obstruxi
                      1. n'Abend Rolf,

                        Du setzt einen relativ modernen Kompromiss für Festton-Instrumente als Norm voraus. Davon abzuweichen ist nicht kaputt, nur anders.

                        ja, okay. Was ich sagen wollte: Ein klassisch gestimmtes Intrument klingt "schräg" oder "kaputt", wenn es in einer anderen Tonart gespielt wird als der, für die es gestimmt wurde.

                        Ich erinnere mich an einen Stadtbummel durch die Stuttgarter Kaufhäuser, mindestens zwanzig Jahre her. Im Erdgeschoss vom Karstadt spielte ein Pianist live. Leichte Klassik, ab und zu ein Stück aus der Popmusik. Ich bin eine Weile stehengeblieben und habe zugehört. Als der Pianist mal eine Pause machte, habe ich ihn angesprochen: Respekt vor Ihrem Talent, aber meinen Sie nicht, ein paar Mark für den Klavierstimmer wären gut angelegt? Er antwortete nach kurzem Zögern: Ja, Sie haben recht. Aber die meisten merken das gar nicht.

                        Die gleichstufige Stimmung ist wie eine Unisex-Jacke. Passt keiner und keinem zu 100%.

                        Hmm. Ich habe esher den Eindruck: Passt immer.

                        Frag mal einen Cellisten oder Violinisten nach Stimmung und Intonation.

                        Kenne leider keinen.

                        Und es gab sogar mal Klaviere mit getrennten Tasten für -is und -es Töne.

                        Ups. Das kann ich mir nur schwer vorstellen.

                        Einen schönen Tag noch
                         Martin

                        --
                        "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
                        1. @@Der Martin

                          ja, okay. Was ich sagen wollte: Ein klassisch gestimmtes Intrument klingt "schräg" oder "kaputt", wenn es in einer anderen Tonart gespielt wird als der, für die es gestimmt wurde.

                          Ein gleichmäßig gestimmtes Intrument hingegen klingt in jeder Tonart schräg oder kaputt. Nur halt weniger schräg oder kaputt.

                          Ich würde von mir aber auch nicht behaupten, dass ich das raushöre. Vielleicht weil ich schon zu viel auf ungestimmten Klampfen gespielt habe? Vielleicht auch andersrum: meine Klampfen waren nie richtig gestimmt, weil meine Ohren das nicht hören. 🤣

                          Und es gab sogar mal Klaviere mit getrennten Tasten für -is und -es Töne.

                          Ups. Das kann ich mir nur schwer vorstellen.

                          Was ich mir hingegen vorstellen kann: Bei einem digitalen Klavier die Stimmung auf eine reine Stimmung umzuschalten – in der jeweilig gewünschten Tonart.

                          🖖 Живіть довго і процвітайте

                          --
                          When the power of love overcomes the love of power the world will know peace.
                          — Jimi Hendrix
                        2. Hallo Martin,

                          Ups. Das kann ich mir nur schwer vorstellen.

                          Hab's wiedergefunden:

                          Wikipedia, Reine Stimmung bei Tasteninstrumenten

                          Rolf

                          --
                          sumpsi - posui - obstruxi
                          1. Moin,

                            Ups. Das kann ich mir nur schwer vorstellen.

                            Hab's wiedergefunden:

                            Wikipedia, Reine Stimmung bei Tasteninstrumenten

                            faszinierend. Hab vorher noch nie gehört, dass es sowas gibt.
                            Das muss ja echte Fingerakrobatik für den Spieler sein.

                            Einen schönen Tag noch
                             Martin

                            --
                            "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
                3. Lieber Martin,

                  Okay, eins vorweg: Die in der Musik übliche Notenschreibweise ist mir immer wieder ein Graus, eben weil sie nicht umkehrbar eindeutig ist. Technisch gesehen ist C♯ und D♭ derselbe Ton, aber die Noten gehören zu verschiedenen Tonarten und Tonleitern.

                  richtig. Da verhält sich die Musik wie eine Sprache mit Regeln der Grammatik und Syntax. Innerhalb einer Tonart gibt es nun einmal ein bestimmtes Set an Tönen, die aufgrund dieser Tonart eine bestimmte Benennung haben. Da es von dieser Tonart Bezüge zu anderen Tonarten gibt, muss das tonale System in sich stimmig bleiben und damit die Töne ihrerseits auch aus Sicht der verwandten Tonarten gleich heißen.

                  Ergibt sich also die Entscheidung, welche Notation die "richtige" ist, nicht automatisch aus der Tonart, in der die Melodie verfasst ist?

                  Das ist korrekt.

                  Denke für die enharmonik muss ich die Werte vergeleichen also wenn z.B. die erste Note ein C ist kann die zweite Note nicht C# sein sondern muss Db sein.

                  Das klingt so erst einmal völlig falsch, weil es keinen tonartlichen Zusammenhang gibt, der das begründen könnte.

                  Ein Zusammenhang, der das Db widerlegen würde:
                  Wenn in der Tonart C-Dur eine Melodie in Halbtonschritten aufwärts geht, also von c über cis nach d, dann ist die Frage, wie der Zusammenhang bei den Begleitharmonien ist. Haben wir auf dem C-Ton einen C-Dur-Akkord klingen, dann braucht es für das cis eine andere Harmonie, da der C-Dur-Akkord sich mit dem cis klanglich beißt. Als Übergang zum Melodieton d, welcher sinnvollerweise mit den tonleitereigenen Tönen als d-moll-Akkord klingen sollte, wäre für das cis ein A-Dur-Dreiklang passend. Als Zwischendominante. Und A-Dur kennt kein des, sondern cis, fis und gis.

                  Ein Zusammenhang, der das Db bestätigen würde:
                  Der Übergang vom Melodieton c über des nach d könnte auch aus der Sicht von Es-Dur betrachtet werden. Die passenden Harmonien wären dann f-moll, Des-Dur und B-Dur. Da darf der Ton nicht cis lauten, da f-moll kein cis kennt, sondern ein des. Deswegen ist die terzverwandte Tonart zu f-moll auch Des-Dur und nicht Cis-Dur.

                  Liebe Grüße

                  Felix Riesterer

                  1. @Felix @martin @rolf @gunnar

                    wow, wollte eigentlich keine musiktheoretische Diskussion anstoßen, ist aber sehr interesant. Ja es ist richtig, dass Db und C# (etc.) unterschiedliche Töne sind und ja es gibt die Sonderanfertigungen von Klavieren die diese Töne auch unterscheiden. Aber ich ging bei der Problemstellung von dem - zumindest in unserem Umfeld - allgemeingültigen Kompromiss der "wohltemperierten" Stimmung aus. Das dies nur ein Kompromiss ist, ist klar, aber spätestens seit Bach hat sich das so durchgesetzt und ich wollte nun nicht das Rad neu erfinden oder die gesamte "neuere" Musiktheorie in Frage stellen 😉, genauso wenig wie ich auf indische Ragas oder sonstige asiatische tonale Systeme eingehen wollte - das würde dann doch zu weit gehen.

                    Denke für die enharmonik muss ich die Werte vergeleichen also wenn z.B. die erste Note ein C ist kann die zweite Note nicht C# sein sondern muss Db sein.

                    Das klingt so erst einmal völlig falsch, weil es keinen tonartlichen Zusammenhang gibt, der das begründen könnte.

                    Ein Zusammenhang, der das Db widerlegen würde:
                    Wenn in der Tonart C-Dur eine Melodie in Halbtonschritten aufwärts geht, also von c über cis nach d, dann ist die Frage, wie der Zusammenhang bei den Begleitharmonien ist. Haben wir auf dem C-Ton einen C-Dur-Akkord klingen, dann braucht es für das cis eine andere Harmonie, da der C-Dur-Akkord sich mit dem cis klanglich beißt. Als Übergang zum Melodieton d, welcher sinnvollerweise mit den tonleitereigenen Tönen als d-moll-Akkord klingen sollte, wäre für das cis ein A-Dur-Dreiklang passend. Als Zwischendominante. Und A-Dur kennt kein des, sondern cis, fis und gis.

                    hier, denke ich, gehst Du von zwei unterschiedlichen Ansätzen aus:

                    Die Melodie und die Harmonik fußt zwar auf der Tonleiter aber in Melodie / Harmonik können natürlich Akzidentals vorkommen. Wie diese notiert werden ist von der Relation untereinander abhängig, soll eine Modulation vorgenommen oder angedeutet werden, handelt es sich um passing notes, etc. -> abhängig davon werden sie notiert und je nachdem welches tonale Zentrum betont wird eben als b oder #

                    Zu deinem Beispiel Melodie geht c-cis-d wäre z.B. auch folgendes Konzept denkbar: Harmonik folgt Cmaj - C#min - Emin7 (in jeweiliger Inversion würde sich nur der Melodieton ändern) -> also wie gesagt abhängig davon was der Komponist will. Klar das mit der Zwischendominante ist ein gängiges Beispiel aber auch A-Dur kommt in der C-Dur Tonleiter und den diatonischen Akkorden nicht vor, wenn du z.B. von im Jazz oft vorkommenden 2-5 Reihen ausgehts, die dann nicht auf die 1 auflösen sondern auf eine neue 2-5 hast du ganz verschiedene Akkorde und kurzfristig verschiedene tonale Zentren, die aber dann auch immer im Verhältnis zum Ausgangs- bzw. Endpunkt gesehen werden. (ist das verständlich ausgedrückt?😉)

                    Die Grundlage für meine Problemstellung aber ist die Tonleiter: Zumindest nach meinem Verständnis haben sich hier zwei Regeln durchgesetzt um eine gewisse Eindeutigkeit zu schaffen: a) nach Möglichkeit keine Doppellung der Buchstabenbezeichnung b) nach Möglichkeit keine Vermischung der Vorzeichen - also entweder alles mit # oder alles mit b notiert. Daher z.B. das Cb statt einem B in Gb-Dur also Gb-Ab-Bb-Cb-Db-Eb-F. Aber natürlich gibt es wie immer zu jeder Regel Ausnahmen, besonders wenn Töne in die Tonleiter aufgenommen werden, die eigentlich nicht im zugrundeliegenden tonalen Zentrum vorkommen. Bestes Beispiel die Blues-Scale: C-Eb-F-Gb-G-Bb-C - die flatted fifth ist hier ein Ton der eingefügt wird, und dadurch das eindeutige Bezeichnungssystem sprengt. Gerade bei "ausgefalleneren" Scalen kann dies häufiger auftreten und die Notierung ist und bleibt nur eine "Krücke". Wenn man sich dann noch z.B. die chromatische Tonleiter anschaut ist das Bezeichnungssystem natürlich komplett überfordert.

                    1. Hallo,

                      Zu deinem Beispiel Melodie geht c-cis-d wäre z.B. auch folgendes Konzept denkbar: Harmonik folgt Cmaj - C#min - Emin7 (in jeweiliger Inversion würde sich nur der Melodieton ändern) -> also wie gesagt abhängig davon was der Komponist will. Klar das mit der Zwischendominante ist ein gängiges Beispiel aber auch A-Dur kommt in der C-Dur Tonleiter und den diatonischen Akkorden nicht vor, wenn du z.B. von im Jazz oft vorkommenden 2-5 Reihen ausgehts, die dann nicht auf die 1 auflösen sondern auf eine neue 2-5 hast du ganz verschiedene Akkorde und kurzfristig verschiedene tonale Zentren, die aber dann auch immer im Verhältnis zum Ausgangs- bzw. Endpunkt gesehen werden. (ist das verständlich ausgedrückt?😉)

                      keine Ahnung, ich versteh nur Bahnhof.

                      keine Doppellung der Buchstaben...

                      Und das gilt bitte auch für das l.

                      Einen schönen Tag noch
                       Martin

                      --
                      "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
                4. Hi,

                  Ich würde die Toneiter

                  Danke - endlich eine passende Bezeichnung für so einiges aus der neueren Zeit, was von der Tonträger-Industrie als Musik bezeichnet wird, aus meiner Sicht aber in die Kategorie Lärm fällt …

                  cu,
                  Andreas a/k/a MudGuard

                  1. Hallo,

                    Ich würde die Toneiter

                    Danke - endlich eine passende Bezeichnung für so einiges aus der neueren Zeit, was von der Tonträger-Industrie als Musik bezeichnet wird, aus meiner Sicht aber in die Kategorie Lärm fällt …

                    autsch. Ja, erwischt. 😀

                    Einen schönen Tag noch
                     Martin

                    --
                    "Hab ich vergessen" ist oft nur ein Euphemismus für "Hab ich noch nie verstanden".
              2. Hallo Eska,

                Denke für die enharmonik muss ich die Werte vergeleichen also wenn z.B. die erste Note ein C ist kann die zweite Note nicht C# sein sondern muss Db sein.

                Bei einer Zufallsskala muss das keine Voraussetzung sein. Das ist nur bei den "klassischen" Tonleitern so.

                Aber grundsätzlich wirst Du wohl eine Zusatzinformation brauchen, welche Kombination von Grundton und Tonleiter mit ♯ und welche mit ♭ zu bilden ist.

                Das heißt dann auch, dass Du abhängig von der ausgewählten Tonleiter die Auswahltabelle der Starttöne modifizieren musst - aus praktischen Gründen (Anzahl der ♯ vs Anzahl der ♭) hast Du in den "Außenbereichen" von Dur und Moll beispielsweise gis Moll, aber As Dur. Gis Dur müsste - als "Nachfolger" von Cis, 8 Kreuze haben. Darunter 2 unnötige (His statt C und Eis statt F) und ein doppeltes (Fisis statt G), damit Du eben NICHT C und Cis sowie G und Gis in der Tonleiter hast, und keinen "Tonsprung" von Dis nach F.

                Du brauchst also:

                • eine Grundtontabelle von C bis H
                • je Grundton die Info, wie die Halbtöne dazu heißen (bei -is ist es einfach, aber im -es Bereich hast Du die Ausnahmen Es, As und B)
                • eine Tabelle von Tonart-Familien (was ein kniffliger Begriff ist, es gibt Tongeschlechter, Modi, uvm), also Dur, Moll, Dorisch, Pentatonisch
                • Klarheit über die Tatsache, dass Du damit indische oder chinesische Musik nicht erfassen kannst, denn die verwenden teils ganz andere Töne
                • Eine Tabelle, die Dir sagt, bei welcher Tonartfamilie welche Starttöne möglich sind (guckst Du hier für Dur und Moll)
                • Hinweise zur Schreibweise: Dur schreibt man mit großem ersten Buchstaben, Moll in kleinbuchstaben)

                Mit Musik hast Du Dir eine vertrackte Fachlichkeit ausgesucht 😉

                Die beiden ersten Tabellen könnte man als Tabelle von Objekten aufbauen:

                const basisTöne = [
                   { ton: C, '♯': 'Cis', '♭': 'Ces' }
                   { ton: D, '♯': 'Dis', '♭': 'Des' }
                   { ton: E, '♯': 'Eis', '♭': 'Es' }
                   { ton: F, '♯': 'Fis', '♭': 'Fes' }
                   { ton: G, '♯': 'Gis', '♭': 'Ges' }
                   { ton: A, '♯': 'Ais', '♭': 'As' }
                   { ton: H, '♯': 'His', '♭': 'B' }
                ];
                
                const chromatik  = {
                   '♯': [ 'C', 'Cis', 'D', 'Dis', 'E', 'F', 'Fis', 'G', 'Gis', 'A', 'Ais', 'H' ],
                   '♭': [ 'C', 'Des', 'D', 'Es', 'E', 'F', 'Ges', 'G', 'As', 'A', 'B', 'H' ]
                };
                
                const familien = [
                   { familie: 'Dur',
                     großbuchstabe: true,
                     tonAbstand: [2, 2, 1, 2, 2, 2, 1 ]
                   },
                   { familie: 'Moll',
                     großbuchstabe: false,
                     tonAbstand: [2, 1, 2, 2, 1, 2, 2 ]
                   }
                   { familie: 'Pentatonik',
                     ...
                   }
                ];
                

                Ein Eigenschaftsnamen wie '♯' oder '♭' ist in JavaScript leider nur mit Anführungszeichen möglich, und das heißt, dass Du einen Zugriff wie ton.♭ nicht schreiben kannst. Es muss ton['♭'] sein. Wenn Dir das zu umständlich ist, nenne die Eigenschaften anders. Z.B. is und es - "is" ist in JS kein reserviertes Wort.

                Die zulässigen Starttöne für Dur und Moll kannst Du als Tabelle an die Familien anhängen, aber Du kannst sie - wenn Du Lust hast - auch aus dem Quintenzirkel ableiten. Eine Quinte in den Tonarten sind immer 7 Halbtöne, d.h. du startest in der chromatischen Tabelle bei Index 0 und erhöhst immer um 7. Überschreitest Du die 11, ziehst Du 12 ab. So kommst Du auf C, G, D, A, E, H, Fis, Cis. Das gleiche abwärts: 7 abziehen, wenn kleiner 0, 12 addieren. Und Du bekommst F, B, Es, As, Des, Ges und Ces. Bei Moll funktioniert das genauso. Außerhalb von Dur und Moll ist die Sache dagegen komplizierter und Du brauchst ggf. doch eine Tabelle von zulässigen Starttönen.

                Das ganze dann mit JS flexibel aufzubauen setzt Reaktion auf input-Events der jeweiligen Auswahllisten voraus. Viel Spaß 😀

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Hallo Rolf, danke für die ausführliche Antwort und den Link zu Eventhandler - werde ich mir genauer anschauen.

                  In deinen Ausführungen hast du die Problematik sehr gut erklärt und verdeutlicht. Vermute die einzige wirklich eindeutige Lösung wäre alle Tonleitern händisch aufzuschreiben 😉 - geht aber etwas an der Idee vorbei. Für die meisten Tonleitern sollte es aber möglich sein mit einfachen vergleichen das Problem zu lösen - ala erster Ton G zweiter Ton entweder G# oder Ab -> also muss es Ab sein da G schon belegt. Aber wenn ich diese einfachen Vergleiche anstelle komme ich schon bei geringfügig asugefalleneren Tonleitern wie der Bluesskala an die Grenze hier habe ich tatsächlich den Fall, dass eine doppelte Bezeichnung vorkommt c-eb-f-gb-g-bb-c.

                  Den Ansatz über den Quintenzirkel muss ich mir nochmal durch den Kopf gehen lassen - da könnte die Lösung des Problems liegen. Ich bin chromatisch vorgegangen und hier kann ich die enharmonische Verwechslung nicht wirklich darstellen. In der wohltemperierten Stimmung ist es einfach ein Halbton zwischen C und C# und C und Db. Wenn man den Quintenzirkel um die enharmonischen Verwechslungen erweitert und die Skalen von dort aus ableitet könnte es vielleicht funktionieren. Hole mir gleich Papier und Bleistift und schaue ob das klappen könnte...

                  Javascript schaue ich mir dann im nächsten Schritt an (momentan läuft es mit PHP, ist halt nicht so elegant, dass man für jede Tonleiter die Seite neu laden muss)...

                  Ich bin dann mal weg, und bastle ein bisschen rum

                  Eska

                  1. Ich bin dann mal weg, und bastle ein bisschen rum

                    Eska

                    yeah - mit dem Quintenzirkelansatz funktioniert es - zumindest für Dur und nat. Moll! Die anderen Skalen habe ich noch nicht ausprobiert, aber sehe nicht warum es nicht klappen sollte.... aber ich lass mich überraschen.

                    Danke für den Denkanstoss!

      2. @@Eska

        nachdem du Jimi Hendrix in deiner Signatur hast 😉

        Dieses Zitat habe ich übrigens von Shakiras „Octavo día“.

        Ich erinnere mich noch gut, das „Schachspiel“ live beim Konzert gesehen zu haben. Bei dem Lied wurde das, was auch im Video zu sehen ist, auf die riesige Leinwand projiziert.

        🖖 Живіть довго і процвітайте

        --
        When the power of love overcomes the love of power the world will know peace.
        — Jimi Hendrix
  2. Wenn ich lese, dass man mittels Javascript die Webseite zusammenbauen möchte und die Daten auch genau dort definiert werden, frage ich mich immer wieso man nicht gleich auf stupides html geht? Du bist mit Javascript ja schon quasi auf der html Ebene.

    Klar man hat gerade bei größeren Blöcken eine Redundanz im Code. So eine Schleife ist da schon was feines. Aber wenn man eine Programmiersprache nur bemüht um die Redundanzen zu beseitigen, dann kannst du auch gleich auf dein besser bekanntes Schlachtfeld des PHP gehen. Zumal du hier den Vorteil hast, dass die Daten später doch "von woanders" her kommen können z.B. Datenbank oder config Datei.

    Solang du statisches html hast ist meiner Meinung nach Javascript die falsche Wahl der Waffe. Solltest du hingegen nur Javascript nehmen um deine Kenntnisse zu verbessern, kannst du meinen gesamten Post vergessen 😉.

    Gruß
    der für die Tonne Schreiber T-Rex