Hallo Besucher, der Thread wurde 8,6k mal aufgerufen und enthält 38 Antworten

letzter Beitrag von Stephan64 am

Melodien aus C64-Spielen als Musiknoten

  • Eine Frage -will nicht unverschämt sein- aber wäre es Dir vielleicht auch möglich, die Dateien im Batch nach .mid zu konvertieren und hier im Midi-Format einzustellen?

    Dürfte heutzutage einfach DAS Standardformat für Musiknoten rsp. Sequenzen sein und vereinfacht das Abspielen und "spielen" damit doch ganz ergeblich...

    Und mein 64er darf dank Midi-Interface auch mitspielen ;-)

    Die Idee war natürlich, dass die ABC-Musiknotation die kompakteste Darstellung ist, aus der sich alles (PDF, MIDI, JPG) ableiten lässt - und wer mag, kann die Musikstücke

    vor der Konversion auch noch transponieren, oder die Abspielgeschwindigkeit anpassen.

    Aber wenn MIDI heutzutage für viele Anwendungen das Standardformat ist, stelle ich das gern auch noch bereit - falls der Upload diesmal klappt, dann siehe unten.

    C64ThemesMidi.zip

  • Frage folgen noch mehr Stücke dieser Art.

    Denn das finde ich echt Super. Dank MuseScore3 kann ich das Super in Papierformat ausdrucken lassen und einwenig anpassen.

    Habe zwar noch nicht alles durchsucht, aber das was ich bis jetzt gefunden habe ist echt Spitze.


    Gibt es vielleicht eine Extra Seite deiner Stücke, oder muss man dann immer hin mal die 64 - Wicki durchsuchen nach neuen Stücke.

    Vielleicht kann man auf der 64-Wicki eine Sperate Seite eröffnen, wo man dann die Musikstücke stehen.


    Also das ist eine Super Arbeit von dir.

    Du könntest doch eine kleine Anleidung schreiben, wie du das machst, dann können viele, so wie ich, dir helfen bei dieser Arbeit. Was meinst du.


    Gruß Drachen

  • Frage folgen noch mehr Stücke dieser Art.

    Vielleicht kann man auf der 64-Wicki eine Sperate Seite eröffnen, wo man dann die Musikstücke stehen.

    Du könntest doch eine kleine Anleidung schreiben, wie du das machst, dann können viele, so wie ich, dir helfen bei dieser Arbeit. Was meinst du.

    Eine Liste aller Musikstücke kann man sich im C64-Wiki anzeigen lassen, indem man die Kategorie "Noten" aufruft - diese Kategorie haben die Administratoren

    auf meine Bitte hin freundlicherweise angelegt. Man bekommt dann eine bunte Mischung von mehr als 600 Dateien unterschiedlicher Typen (JPG, PDF, ABC),

    aber schön alphabetisch sortiert und leicht zu durchsuchen.


    Weitere Stücke sind in nächster Zeit nicht geplant: Wie im einleitenden Abschnitt geschildert, habe ich alle im C64-Wiki eingetragenen Spiele von A bis Z eines

    nach dem anderen gestartet, die Schreibzugriffe auf den Soundchip SID während der Musikwiedergabe analysiert und wo einfach möglich in Musiknoten

    umgewandelt. Wenn das nicht so einfach möglich war, dann aus einem der folgenden Gründe:

    1. Zahlreiche Spiele beschreiben die Frequenzregister des SID nicht nur einmal für jeden Ton eines Musikstücks, sondern ganz regelmäßig und mit hoher Frequenz

    (typischerweise alle 20 ms). Teilweise dient das dazu, Musikstücke mit mehr als drei Stimmen wiederzugeben (indem eine Stimme des SID abwechselnd zwei
    verschiedene Töne eines Akkords spielt), teilweise kann die Tonhöhe kontinuierlich steigen oder fallen, teilweise kann ein Vibrato erzielt werden. Alle drei

    Effekte sind sehr schön beim Titellied von "Green Beret" zu hören. Wenn man allerdings dann die Schreibzugriffe auf den SID analyisiert, so sieht man vor lauter

    POKEs keine Melodie mehr.

    2. Bei einigen Spiele liegen zwischen den Tönen der Musik Intervalle, die kein Vielfaches eines Halbtons sind (mathematisch ausgedrückt: der Quotient ihrer Frequenzen

    ist keine Potenz der zwölften Wurzel aus 2) - die Titelmelodie von "Firelord" ist dafür ein Beispiel.

    3. Teilweise laufen die einzelnen Stimmen einer Melodie völlig asynchron nebeneinander her (zum Beispiel bei der Siegermelodie von "Buggy Boy"), das Timing ist

    so ungenau, dass nie klar ist, ob die verschiedenen Töne der einzelnen Stimmen denn nun gleichzeitig oder nacheinander erklingen sollen (zum Beispiel bei der

    Begleitmelodie von "World Cup"), oder die Geschwindigkeit ändert sich beständig während der Musikwiedergabe (zum Beispiel beim Spiel "Space Trap") - all dies

    macht die Umwandlung in Noten schwer bis unmöglich.

    Mit viel Mühe und einer genauen Analyse der Schreibzugriffe auch auf die Wellenform-Register lässt sich vielleicht das eine oder andere Musikstück aus der oben

    mit "1." bezeichneten Gruppe noch umwandeln - das würde ich dann zunächst im C64-Wiki eintragen, und sobald einige neue Stücke zusammengekommen sind,

    irgendwann auch hier bereitstellen.


    Die Anleitung ist denkbar einfach: In einem C64-Emulator ein Spiel starten, alle Schreibzugriffe auf den SID einschließlich mikrosekunden-genauer Timestamps

    mitprotokollieren und dieses Protokoll anschließend analysieren (insbesondere: die in die Frequenzregister des SID geschriebenen Werte in Noten umrechnen).

    Die einfachste Art des Mitprotokollierens dürfte der im Beitrag von 1570 erwähnte Patch für VICE sein. Ich selbst habe einen eigenen C64-Emulator verwendet,

    die SID-Schreibzugriffe über die serielle Schnittstelle und einen zwischengeschalteten Arduino an einen zweiten PC weitergeleitet und dort dann analysiert.


    Gruß Stephan64

  • Vielen Dank für deine Info.

  • Ich muss aus Interesse nochmal fragen, was mit Cauldron (Hexenküche) ist? :rolleyes: :weg: Stephan64: Fehlt sie evtl. aus einem technischen Grund? Ich habe mir die Abspielroutine des SIDs nie angesehen, frage mich aber, ob die irgendwas groß anders macht als andere Routinen..?


    Mir war stets aufgefallen, dass offensichtlich schon zuvor niemand je ein vernünftiges Midi-File draus gemacht hat, weil alle Coverversionen/Remixe bis auf einen (zwei, wenn ich mein eigenes "Cover" dazuzähle) die Melodie falsch wiedergeben.


    Ich meine die Melodie ab 0:45

  • Ich muss aus Interesse nochmal fragen, was mit Cauldron (Hexenküche) ist?

    Im ersten Durchgang habe ich nur Spiele berücksichtigt, die pro Note genau einen Schreibzugriff auf die Frequenzregister des SID durchführen - das macht die Umwandlung in die ABC-Musiknotation besonders einfach.
    Bei "Cauldron I" (Hexenküche) ist das nicht der Fall - das Spiel schreibt stur alle ca. 20 ms die Frequenzregister, selbst wenn sekundenlang der gleiche Ton erklingt.


    Weil die Melodie aber völlig auf Spezialeffekte verzichtet, war die Rekonstruktion der zugehörigen Musiknoten trotzdem kein Hexenwerk; man muss eben aufeinanderfolgende Noten mit gleicher Tonhöhe verschmelzen.

    Die (hoffentlich) angehängten ZIP-Archive enthalten die resultierenden ABC- und MIDI-Files. Das Schlagzeug habe ich auskommentiert, weil mein ABC2MIDI-Konverter das nicht richtig hinbekommt - bei Bedarf

    einfach wieder aktivieren (durch Löschen der Leerzeile vor den weiteren Noten von V:3).


    Drachen: Ein paar weitere Melodien, die sich problemlos konvertieren ließen (aus den Spielen "Arcana", "Airline" und "Airwolf") sind auch noch in den Archiven enthalten.


    C64Themes2.zipC64ThemesMidi2.zip

  • Geht das denn überhaupt mit vielen Songs?

    Ich erinnere mich daran, als ich mit dem Soundmonitor Musik (eher Töne) gemacht habe, mußte ich teilweise eine menge Register und Filter setzen um zum beispiel ein Arpeggio zu erzeugen.

    So etwas gibt es ja bei Midi-Files nicht oder ?

  • Geht das denn überhaupt mit vielen Songs?

    Ich erinnere mich daran, als ich mit dem Soundmonitor Musik (eher Töne) gemacht habe, mußte ich teilweise eine menge Register und Filter setzen um zum beispiel ein Arpeggio zu erzeugen.

    So etwas gibt es ja bei Midi-Files nicht oder ?

    Mit MIDI-Files kenne ich mich zu wenig aus, um diese Frage beantworten zu können - zu denen kam ich erst durch Ruudis Bitte nach einer Batch-Konversion, wie die Jungfrau zum Kind.

    Mein ursprüngliches Vorhaben war die Rekonstruktion der Musiknoten, um dann auf richtigen Musikinstrumenten - möglicherweise auch mehrere Musiker gemeinsam - die Melodien spielen zu können.

  • Man kann einiges in Midi abbilden, ist ja -wenn man bedenkt, dass es in etwa so alt ist wie der C64- relativ schnell und fasst sich zudem kurz... Aber natürlich würde man erkannte Effekte eher auch als solche beschreiben, als sie durch Tonhöhenschwankung etc nachzubilden. Dazu braucht man dann aber spezielle Effektgeräte, die die übermittelten Noten, Lautstärken etc. einfach anders interpretieren, d.h. das ist dann nicht mehr durch Standard-Midi abbildbar, sondern nur abgestimmt aufs eigene Equipment.


    Daher haben sich im Laufe der Jahre erweiterte Midi-Standards etabliert, die deutlich mehr als Tonhöhe, Kanal und Lautstärke definieren, d.h. eineindeutige Zuordnung Kanal zu Klangfarbe resp. Effekt ermöglichen.


    Durch den Einfluss der PC-Technik, sprich Soundkarten mit Wavetables etc. hat sich Midi auch nochmals weiterentwickelt und aktuell wird wohl an einer neuen Hauptversion gearbeitet, die sich dann wohl auch von der bislang fixen Baudrate und Kanalcodierung trennen wird, aber da bin ich offen gesprochen auch nur sehr am Rande informiert drüber, weil mein Equipment seit Jahrzehnten schon recht konstant ist (Yamaha DX7 und Vollmidi-Akkordeon von Hohner, sowie deren Expander und einen Hammond für den amtlichen B3-Sound, sowie den unvermeidlichen Solton/Ketron MS4. Zur Ehrenrettung sei gesagt, dass ich auf dem Akkordeon auch rein akustisch spielen kann und auch eine leibhaftige echte Hammond-Orgel im Wohnzimmer kreischen lasse ab und an, aber die ist halt wenig portabel...)

  • um zum beispiel ein Arpeggio zu erzeugen.

    So etwas gibt es ja bei Midi-Files nicht oder ?

    Wo ist denn da das Problem genau? Je nach Geschmack macht man aus einem Arpeggio in MIDI einfach kein Arpeggio (sondern spielt die Noten des Akkords einfach tatsächlich gleichzeitig - schließlich wurden Arpeggio beim C64 meist wegen Mangel an Stimmen gemacht, und das Problem gibt's bei MIDI ja nicht) oder spielt die Noten genau wie beim C64 schnell nacheinander, wobei letzteres in Notation dann natürlich ggf. etwas hässlich aussieht.


    Vibrato gibt's auch in MIDI, ebenso wie Portamento. Da ist eher die Herausforderung, das sauber programmatisch zu erkennen, damit die Notation schick aussieht (und nicht etwa z.B. ein Vibrato als mehrere Töne inkl. Portamento abgebildet wird, auch wenn's gleich klingt).


    Viele "Tricks" beim C64/SID wie z.B. die ganzen Filter- oder Digital-Audio-Sachen lassen sich natürlich nicht generisch auf MIDI abbilden.

  • Aber wenn MIDI heutzutage für viele Anwendungen das Standardformat ist, stelle ich das gern auch noch bereit ...

    Hallo Stephan64 , ich bin gerade mal in einer ruhigen Minute dazugekommen, in deine Arbeit in Form der MIDI-Datei mittels eines MIDI-Players reinzuhören.


    Ich ziehe wirklich meinen Hut, was du hier in Arbeit, Ausdauer und Präzision geleistet hast und sage ein großes Danke, dass du die Ergebnisse hier für alle zur Verfügung gestellt hast. Mein größter Respekt! :thumbup:


    Wer weiß, was musikalisch angehauchte C64-Fans mit den Noten noch Schönes produzieren werden!


    Zu meinen - natürlich ganz subjektiven - Lieblingen von deinen MIDI-Stücken gehören:


    - Druid - Theme

    - Jet Set Willy - Theme 1

    - Robin of the Wood - Theme

    - Sabre Wulf - Theme


    Macht echt Spaß, das mal so anzuhören! Vielen Dank! :thumbup:

  • Meine Motivation, dieses Projekt in Angriff zu nehmen, war tatsächlich der Wunsch, die Musikstücke einmal auf einem Notenblatt vor sich zu sehen und auf einem "richtigen" Musikinstrument

    spielen zu können - und witzigerweise gehörten "Robin of the Wood - Theme", "Druid - Theme" und "Sabre Wulf - Theme" auch bei mir zu den allerersten Stücken, die ich analysiert und

    umgewandelt habe.


    Ebenfalls schon seit Jahren neugierig war ich auf die folgenden Begleitmelodien:

    - Frogger

    - die ganzen Tracks aus Ghettoblaster


    Und bei einigen Melodien interessierte mich die Technik, der die Stücke ihren ganz besonderen Klang verdanken:

    - Starquake Theme 1 (das Stück wird mit den Rechteckgeneratoren des SID wiedergegeben, wobei das Tastverhältnis 200 Mal pro Sekunde geändert wird und mit einer Frequenz von 5 Hz

    zwischen 65% und 70% oszilliert - daher der romantisch-schnulzige Klang)

    - Burnin' Rubber (die Noten werden abwechselnd auf zwei Sägezahn-Tongeneratoren des SID wiedergegeben, so dass sich jede Noten zur Hälfte mit ihrem Vorgänger und ihrem Nachfolger

    überlappt - daher der glockenähnliche Klang. Eine ähnliche Technik findet sich bei "Slap Fight Phase 4" und "Lords of Conquest End")


    "Slapfight" war auch eines der Spiele, die ich vorher nicht gekannt habe und bei denen mich die musikalische Untermalung überrascht hat; ebenso "Dizasterblaster Theme" und die ganzen

    Melodien aus "Friday the 13th".

  • In einem zweiten Anlauf bin ich diejenigen Spiele im C64-Wiki noch einmal durchgegangen, bei denen während der Musikwiedergabe die Frequenzregister des SID mit konstanter (und üblicherweise hoher) Rate beschrieben werden - also Melodien, die vermutlich mit einem Tracker erstellt worden sind. Weil hier nicht jeder Schreibzugriff einer Musiknote entspricht, müssen aufeinanderfolgende Noten mit gleicher Tonhöhe explizit getrennt werden - aufgrund von Schreibzugriffen auf die Wellenform-Register, oder notfalls manuell anhand des Klangs. Und in vielen Fällen scheitert eine Rekonstruktion der Noten schließlich doch an einem starken Vibrato, an gleitenden Übergängen zwischen zwei verschieden hohen Tönen oder an Arpeggios.


    Eine kleine Fortsetzung der Musiknoten-Sammlung ist dennoch dabei herausgekommen: Weitere 81 Melodien aus 45 Spielen, unten angehängt als zwei ZIP-Archive (als Dateien in ABC-Musiknotation, und als MIDI-Dateien).


    Ganz nebenbei findet sich bei der Analyse der Stücke auch das eine oder andere interessante Detail. So werden beispielsweise während der Wiedergabe der Titelmelodie im Spiel "Traffic" alle Hüllkurven- und Tastverhältnis-Register sowie das Register für die Lautstärke rund 4700 Mal pro Sekunde beschrieben - mit Werten, die sich während des gesamten Musikstücks nicht ändern.

  • Tastverhältnis-Register sowie das Register für die Lautstärke rund 4700 Mal pro Sekunde beschrieben - mit Werten, die sich während des gesamten Musikstücks nicht ändern.

    Kann es sein, dass der SID anders klingen würde, wenn man den Wert nicht erneuert? Dass das Neubeschreiben also doch etwas auslöst, beim Tastverhältnis vielleicht ein Rücksetzen des internen Zählers beim Zugriff oder Ähnliches?


    Lässt sich das mit Deiner Toolkette rausfinden, Stephan64 ?

  • > Kann es sein, dass der SID anders klingen würde, wenn man den Wert nicht erneuert? Dass das Neubeschreiben also doch etwas auslöst, beim Tastverhältnis vielleicht ein Rücksetzen des internen Zählers beim Zugriff oder Ähnliches?


    Unwahrscheinlich... der höchste in diesem Musikstück vorkommende Ton hat eine Frequenz von 784 Hz. Wenn ich dann 4700 Mal pro Sekunde (rund 6 Mal pro Schwingung) den Zähler zurücksetze, dann müsste der Ton komplett verstummen.


    > Lässt sich das mit Deiner Toolkette rausfinden, Stephan64 ?


    Sollte auch ohne Toolkette überprüfbar sein... einfach mit einem C64, zwei guten Ohren und dem folgenden Programm (das im Sekundentakt den immer gleichen Ton abspielt - abwechselnd mit und ohne die im Spiel "Traffic" beobachteten Schreibzugriffe auf die Hüllkurven- und Tastverhältnis-Register des SID):


    Code
    1. 10 A=54272
    2. 11 POKEA+0,49:POKEA+1,28:POKEA+2,102:POKEA+3,6:POKEA+5,9:POKEA+6,32:POKEA+24,15
    3. 12 FORN=0TO66:READD:POKE49152+N,D:NEXT
    4. 13 DATA120,169,000,141,004,212,169,065,141,004,212,162,016,160,000,169,032,141
    5. 14 DATA006,212,169,009,141,005,212,169,102,141,002,212,169,006,141,003,212,056
    6. 15 DATA169,035,233,001,176,252,136,208,226,202,208,223,173,019,192,073,032,141
    7. 16 DATA019,192,141,024,192,141,029,192,141,034,192,088,096
    8. 17 SYS49152:GOTO17


    ... also ich höre da keinen Unterschied.