Gast
#578151
http://elm-chan.org/works/mxb/report_e.html beschreibt ein Aufbau zur DDS einer elektronischen Spieluhr mit 6 Stimmen. Ähnlich wird es in http://www.microsyl.com/doorbell/doorbell.html gemacht, allerdings mit zwei Stimmen und einem für mich einfacher zu durschauenden 'Sequencer', da in C programmiert. Mit Sequencer meine ich den Teil, der aus den Musikdaten die Musik macht. Ich verstehe Assembler nicht gut, deswegen ist mir ChaNs Prinzip leider nicht ganz klar. Hier mal ein Ausschnitt aus den Musikdaten (http://elm-chan.org/works/mxb/mg.zip): 120, 0, E5|en, 150, 0, Dis5|en, 180, 0, E5|en, 210, 0, Dis5|en, 240, 0, E5|en, 14, 1, H5|en, 44, 1, D5|en, 74, 1, C5|en, 104, 1, A5, A3|en, 134, 1, E3|en, 164, 1, A4|en, 194, 1, C4|en, 224, 1, E4|en, 254, 1, A5|en, ... en steht für 128 und kennzeichnet end of line. In einer Zeile stehen also zwei Werte und mindestens eine Note (Dezimal bis ca. 50), davon ist die Letzte mit dem eol Bit versehen. Es gibt 378 Zeilen. Die Notenlänge hängt anscheinend von der Note selbst ab (wird nur angeschlagen und klingt dann aus). Die beiden ersten Werte werden immer erhöht und bilden zusammen anscheinend den Einsatzzeitpunkt (absolut!?). Mit C würde man vielleicht direkt einen 16bit Wert benutzen? Warum wird diese Reihenfolge der Bytes verwendet? Jetzt die eigentliche Frage: wie ist der Timer umgesetzt und wie getaktet?