Ich habe am C128 mal in Basic (mit den Play-Befehlen) eine Musik komponiert.
Ist es eigentlich irgendwie möglich, daraus ein .sid zu machen um es am PC abzuspielen?
Hallo Besucher, der Thread wurde 4,4k mal aufgerufen und enthält 38 Antworten
letzter Beitrag von Flexman am
SID-File aus Basic-Musik erstellen
- Flexman
- Erledigt
-
-
Weiß das niemand? Was sind eigentlich SID-Dateien?
Werden die extra manuell erzeugt, oder wird da der Sound irgendwie aus einem Programm extrahiert? -
SID-Dateien SIND das Programm. Sie enthalten in der Regel Assembler Code, der die Musik abspielt.
SID-Files können so weit ich weiss auch Basic Programme enthalten und führen diese dann auch aus. Allerdings emulieren die meisten SID-Spieler einen C64 mit dem C64 Basic Rom. Du hast deine Musik auf dem C128 geschrieben und das können SID-Spieler (meines Wissens nach) nicht.
Du kannst Deine Programme am PC abspielen, indem Du sie im Vice-Emulator (x128.exe) startest. Das funktioniert ganz gut, ist aber wohl nicht das, was Du willst...
-
Ist das so?
Sind SId files nicht eher daten?
Natuerlich kann man jetzt argumentieren, dass Programme auch daten sind.
Was ich aber meine:
Soweit ich weis ist im sidfile am Anfang der Alorithmus und dann kommen nur noch daten auf denen jener Algorithmus eben arbeitet. -
Bei mir herrscht da auch das geballte Halbwissen. Aber ich hatte letztens ein SID file in ein Programm eingebunden, und dort war es so dass ich zunächst den Header abgeschnitten hatte, danach die Daten an der richtigen Stelle in den Speicher gelegt habe und schließlich erst in eine init Routine gesprungen bin und danach eine Play Routine zyklisch aufgerufen habe. All diese Routinen waren im SID file vorhanden und ich musste nichts dazu programmieren.
-
Ist das so?
Sind SId files nicht eher daten?Es ist genau so wie beschrieben. Natürlich enthält ein SID file auch (oft größtenteils) Daten. Das Format dieser Daten hängt aber vom integrierten Player Code ab. Der Player enthält in der Regel eine Routine zum initialisieren und eine, die regelmäßig zum abspielen aufgerufen wird. Üblicherweise synchron mit dem VIC, also einmal pro Rasterzeilen-Interrupt.
Für ein allgemein verwenbares SID File bleibt also wohl nur in Assembler nachprogrammieren -- das Timing war in Basic wahrscheinlich mit Warteschleifen gemacht, also muss das neu überlegt werden.
-
Man kann den gesamten BASIC code mit im SID einbinden und dann als routine den interpreter aufrufen.
Technisch gibt das das SID format her, gemacht hat das aber wohl (aus gutem Grund) bisher niemand. -
Zitat von andi6510
SID-Files können so weit ich weiss auch Basic Programme enthalten und führen diese dann auch aus.
Andersrum wird ein Schuh draus. Ein Basic Programm kann theoretisch per sys Aufruf eine IRQ-Routine anstoßen die ein SID-File abspielt während das Basic Programm weiterläuft.
Ansonsten ist ein SID-File ein Abspielprogramm inklusive Abspielanleitung, das direkt von der CPU im 50stel-Sekundentakt ausgeführt wird, wie zrs1 schon sagte.
Edit
@ enthusiOK, war mir neu. Was sich daraus für Anwendungen ergeben sollen kann ich mir aber nicht so recht vorstellen. Aus BASIC heraus schon eher, z.B. wenn man eine Hintergrundmelodie zu einem Basic Spiel haben möchte ohne dass der Interpreter sich darum kümmern muss.
-
-
Ah, das hatte ich uebersehen. Klar z80 code eher nicht
So oder so duerfte der Aufwand das neu zu machen oder zumindest zu konvertieren in ein 'player format' WESENTLICH einfacher sein.
Wie umfangreich ist es denn?
Du musst ja nur wissen welche Register Du schreibst (mit welchen Werten) -
Er hat die Play Befehle des BASIC 7.0 benutzt. Ob er weiss, wie das auf Register mapped...?
Ich glaube die Urspruengliche Frage kann man einfach mit "Es gibt kein Tool im Sinne von Basic File rein, SID File raus" beantworten.
Man koennte was basteln - z.B. eine Routine, die sich ins Basic einklingt und die SID Register Zugriffe captured. Dazu eine Abspielroutine, die das dann wieder abspielen kann. -
Also es gaebe ja zumindest eine Brut-Foce-Loesung fuer das Problem:
1) Basic Programm abspielen und als Audiodatei aufnehmen.
2) Audiodatei mit eine Commodore 64 AudioGrapper (oder wie auch immer das Ding heist - Anleitung gabs mal in einer 64ger-Ausgabe) aufnehmen und als Sid speichern. -
Wenn der c128 ins Basic 7.0 bootet arbeitet übrigens der 8502 Prozessor, der zum 6502 kompatibel ist. Der Z80 greift nur im CP/M Modus oder wenn er explizit aus dem C128 Modus heraus angesprochen wird.
Theoretisch müsste man im C128 Modus also auch eine Art SID Player hinkriegen.
Aber wenn man seine C128 Basic Melodie von Basic unabhängig abspielen will hilft wohl nur Zaadis Tip, wenn der Aufwand im Rahmen bleiben soll.
Ich hätte das analog aufgenommen und ein MP3 draus gemacht. Hauptsache man hat es ohne einen c128 und Basic zu brauchen.
Oder man komponiert das Stück neu nach und benutzt einen SID Tracker. Sowas gibt es bestimmt auch unter Windows.
Edit:
https://woolyss.com/chipmusic-chiptrackers.php?s=windows -
Wenn der c128 ins Basic 7.0 bootet arbeitet übrigens der 8502 Prozessor, der zum 6502 kompatibel ist. Der Z80 greift nur im CP/M Modus oder wenn er explizit aus dem C128 Modus heraus angesprochen wird.
Das stimmt offenbar so nicht ganz, schau mal in den Z80/CP/M Thread zum C128. Da wird beim Starten der Z80 benötigt bevor der 8502 übernimmt:
CP/M Z80 Verständnisfrage -
Der 8-Bit guy hat kürzlich erst ein Video veröffentlicht in dem genau dieses Zusammenspiel der CPUs im 128er von seinem Erfinder persönlich erklärt und begründet wird:
[Externes Medium: https://www.youtube.com/watch?v=wzMsgnnDIRE] -
Ja Ich habe das schlecht formuliert.
Wenn der z80 beim Booten übergangen würde, könnte cp/m nicht starten.Die c128 Basic Mucke spielt aber der 8502 ab. Ich dachte bis vor kurzem übrigens auch, dass ein 6502 sich um den c64 Modus kümmert und ein z80 um alles (!) andere inklusive Basic 7.0.
Erst als Ich erfuhr, mein z80 im c128 schimmelt nur herum, fing Ich aktiv mit cp/m an.
-
Also das Lied sieht ungefähr so aus:
Code- 7001 PLAY"V3X0V2X0V1X0T8O0IARO1ARO2ARAO3ARAO4ARAO5AR
- 7010 PLAY"O2IT8FFFFFFFF#G#G#G#G#G#G.#GICCCCCCICS#DIFFFFHF
- 7020 PLAY"V1T8IFV2T3ICV1FFV2CV1FFV2BV1FFV2CV1F#GV2BV1#GV2BV1#GV2CV1#G#GV2CV1#G.#GV2.BV1CCV2CV1CCV2BV1CV2BV1CV2CV1CV2CV1S#DIV2CSCIV1FFV2BV1FFV2CV1HFV2ICEFB
- 7030 PLAY"IFV2T3ICV3O4T7QFO2V1FFV2CV1FV3O4QFIO2V1FV2BV1FFV2CV1F#GV2BV3O4Q#GO2IV1#GV2BV1#GV2CV1#GV3O4Q#GO2IV1#GV2CV1#G.#GV2.B
- 7040 PLAY"V1CV3O5QCO2IV1CV2CV1CCV2BV3O5QCO2IV1CV2BV1CV2CV1CV2CV1S#DIV2CSCIV3O4QFO2IV1FFV2BV1FFV2CV3O4QFO2IV1HFV2ICEFB
- 7050 PLAY"V1IFV2T3ICV3O4T7QFO2V1FV3O4FO2IV1FV2CV1FV3O4QFIO2V1FV2BV1FV3O5CO2V1FV2CV1FV3O4S#GFIO2V1#GV2BV3O4Q#GO2IV1#GV2BV1#GV2CV1#GV3O4Q#GO2IV1#GV2CV1#G.#GV2.B
- 7060 PLAY"V1CV3O5QCO2IV1CV2CV3O5QCIO2V1CCV2BV3O5QCO2IV1CV2BV1CV2CV3O5QCO2IV1CV2CV1S#DIV2CSCIV3O4SF#DO2IV1FV3O4QFO2IV1FV2BV1FFV2CV3O4QFO2IV1HFV2ICEFB
- 7068 PLAY"V1T8O2IV.CV3O4.CO2V1.DV3O4.DO2V1.EV3O4.EO2V1.FV3O4.FO2V1.GV3O4.GO3V1.CO5V3.C
- 7090 PLAY"V1T8O3IV.CV3O5.CO2V1.GV3O4.GO2V1.FV3O4.FO2V1.EV3O4.EO2V1.DV3O4.DO2V1.CO4V3.C
- 7098 PLAY"V1CV3O5QCO2IV1CV2CV3O5QCIO2V1CCV2BV3O5QCO2IV1CV2BV1CV2CV3O5QCO2IV1CV2CV1S#DIV2CSCIV3O4SF#DO2IV1FV3O4QFO2IV1FV2BV1FFV2CV3O4QFO2IV1HFV2ICEFB
- 7100 PLAY"V1IFV2T3ICV3O4T7QFO2V1FV3O4FO2IV1FV2CV1FV3O4QFIO2V1FV2BV1FV3O5CO2V1FV2CV1FV3O4S#GFIO2V1#GV2BV3O4Q#GO2IV1#GV2BV1#GV2CV1#GV3O4Q#GO2IV1#GV2CV1#G.#GV2.B
- 7101 PLAY"V1T8O3IV.CV3O5.CO2V1.GV3O4.GO2V1.FV3O4.FO2V1.EV3O4.EO2V1.DV3O4.DO2V1.CO4V3.C
- 7110 PLAY"V1CV3O5QCO2IV1CV2CV1CCV2BV3O5QCO2IV1CV2BV1CV2CV1CV2CV1S#DIV2CSCIV3O4QFO2IV1FFV2BV1FFV2CV3O4QFO2IV1HFV2ICEFB
- 7120 PLAY"V1IFV2T3ICV3O4T7QFO2V1FV3O4FO2IV1FV2CV1FV3O4QFIO2V1FV2BV1FV3O5CO2V1FV2CV1FV3O4S#GFIO2V1#GV2BV3O4Q#GO2IV1#GV2BV1#GV2CV1#GV3O4Q#GO2IV1#GV2CV1#G.#GV2.B
- 7130 PLAY"V1T8IFV2T3ICV1FFV2CV1FFV2BV1FFV2CV1F#GV2BV1#GV2BV1#GV2CV1#G#GV2CV1#G.#GV2.BV1CCV2CV1CCV2BV1CV2BV1CV2CV1CV2CV1S#DIV2CSCIV1FFV2BV1FFV2CV1HFV2ICEFB
-
hmmm, eigentlich koennte man den C128 PLAY Befehl fuer den C64 als Basic Erweiterung nachprogramieren (bzw. aus dem C128 Basic-ROM extrahieren). Mit dieser Erweiterung wuerde dann das Basic Programm auf dem C64 laufen und das koennte dann ein SID-Player wiederum abspielen...
-
So arg riesig ist das Programm doch nicht. Warum nicht mit einem SID Tracker unter Windows das Ding einfach nachbauen und am Ende eine .sid-Datei und eine .prg-Datei haben (vgl. Link in Post 13)? Das wäre dann ein Wochenende an dem man was Sinnvolles für sein Retro Hobby getan hat.
Jedenfalls schneller als sich eigene Player / Konverter etc. zu programmieren.
-
hmmm, eigentlich koennte man den C128 PLAY Befehl fuer den C64 als Basic Erweiterung nachprogramieren (bzw. aus dem C128 Basic-ROM extrahieren). Mit dieser Erweiterung wuerde dann das Basic Programm auf dem C64 laufen und das koennte dann ein SID-Player wiederum abspielen...
Dazu müsste aber diese Erweiterung im SID Player integriert sein....