miniMIDImaxi - ein C64 MIDI-Interface

Es gibt 4 Antworten in diesem Thema, welches 1.720 mal aufgerufen wurde. Der letzte Beitrag (24. Oktober 2023 um 17:10) ist von advotax.

  • miniMIDImaxi

    Ein universales MIDI-Interface für den C64 (zum Nachbau)

    Vorgeschichte

    Ursprünglich wollte ich dereinst ein MIDI-Interface (zumindest mit MIDI-Eingang) mit einem EPROM kombinieren, auf welchem sich Cynthcart befindet und damit ganz groß im Synth-Pop rauskommen. Im Handbuch zum MIDI-Interface "Model 242" von Sequential Circuits ist dankenswerterweise ein Schaltplan enthalten.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Den oberen Teil weggelassen (CLOCK IN und START/STOP), da ich sowieso nicht wusste, wie das zu implementieren wäre, woher ich einen 6520 bekomme und diese Funktionen auch nicht wirklich benötigte. Der C64 sollte als Synth direkt an einem MIDI-Keyboard oder als Instrument in der MIDI-Kette hängen.

    Heraus kam das:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bis auf einen kleinen, wenn auch nicht unwesentlichen Layoutfehler (/CE fürs EPROM vergessen :whistling:), der sich aber mit einer kleinen Drahtbrücke leicht beheben lässt, funktionierte das erstmal.

    Allerdings nicht mit Cynthcart.

    Erstens war die neueste Version gar nicht mehr als reine ROM-Variante vorgesehen (hab das Projekt bereits vor "etwas" längerer Zeit angefangen *räusper*). Da die Software inzwischen zu groß war, liegt si gepackt im EPROM und wird einfach nur ins RAM kopiert. Geht, aber irgendwie nicht das, was ich wollte bzw. erwartete (Sofortstart). Zweitens wird zumindest in den fertig kompilierten Versionen von Cynthcart nur ein DATEL(-kompatibles) Interface unterstützt, kein Sequential.

    Nun denn, dann wenigstens mit anderer Software nutzen. Also ohne EPROM und "hä?! nur 30719 basic bytes?" Oh nein! Rechner defekt? Doch nicht nur ein unwesentlicher Layoutfehler? Nein. Nur /EXROM hart auf Masse gelegt, weil das Modul ja autostarten sollte. So gehts besser:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Nun ist /EXROM immerhin schaltbar.

    Funktioniert (als Sequential) - dennoch unbefriedigend in der Gesamtsituation.

    Also wieder/weiter gegooglet. Neben allerlei Bauvorschlägen und Bildern von DATEL-Originalen und Klonen und kurz vor der Aufgabe und dem Kauf eines Bitte melde dich an, um diesen Link zu sehen., stieß ich bei Bitte melde dich an, um diesen Link zu sehen. auf ein Textfile namens C64MIDI-INTERFACE.TXT (unter documents/projects/other), in dem ein gewisser Frank Prindle (war schon rege im ARPAnet zum Thema C64 aktiv!) im Jahre 1989 ein universelles MIDI-Interface beschreibt, dass neben DATEL auch Passport und Sequential Standards kann. Inkl. Schaltplan als ASCII-Text, aber auch als Postscript. Das wär's doch! Umgewandelt sieht das so aus:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die Auswahl des jeweiligen Interface-Standards erfolgt, soweit ich das verstehe, indem man in eine IC-Fassung eine weitere IC-Fassung einsetzt, deren Pins in bestimmter Weise verschaltet sind, so dass die Verbindungen der Adress-, CS- und sonstigen Leitungen entsprechend hergestellt werden. Also ein Mehrfach-Jumper-Block-Dingens je Interface-Typ. Ich hab es eine Weile versucht nachzuvollziehen, aber ganz ohne Bild hab ich's nicht hinbekommen. Da ich auch ein paar andere Bauteile und Details der Schaltung ersetzen bzw. ändern wollte, hab ich es etwas umgestrickt.

    Umsetzung

    Als Optokoppler is statt dem PC900 ein 6N138 verbaut. Beschaltung ist minimal anders, Prinzip und Funktionsweise sind exakt gleich. Statt dem "diskreten" Oszillator hatte ich aus Platzgründen, der Einfachheit und der relativ guten Beschaffbarkeit halber einen Quarzoszillator im DIL-Gehäuse vorgesehen. Und statt inzwischen obskurer LS366 und LS293 kommen 74xx14 als Inverter bzw. 74xx74 als Taktteiler zum Einsatz. Den LS30 wollte ich eigentlich auch noch ersetzen, weil der ebenfalls eher schlecht zu bekommen ist, aber das war mir auch wieder zu aufwendig. Kessler hatte zumindest damals noch welche und HCT30 hatte ich auch noch irgendwoher (vermtl. Reichelt). Also hab ich es so gelassen. Hab leider keinen neuen Schaltplan erstellt, aber fertig sieht das so aus:

    Bitte melde dich an, um diesen Anhang zu sehen.

    War auch schon mal Bitte melde dich an, um diesen Link zu sehen. zu sehen.

    Statt einem Multi-Jumper gibt es 5 einzelne. Die legen die CS-Leitungen und R/W vom C64 zum 6850 und die Taktfrequenz des selbigen fest. Die übrigen Inverter können einen gepufferten und somit spezifikationskonformen MIDI-THRU und (optional) Aktivitäts-LEDs für MIDI-IN und MIDI-OUT zur Verfügung stellen.

    Statt der 5-Pin-DIN-Buchsen sind 3.5mm-Klinkenbuchsen verbaut. Das spart Platz ist relativ klein (das "mini" im Namen kommt von "mini jacks") und entspricht den aktuellen MIDI 2.0 Hardware Spezifikationen als "TRS MIDI A". (s.a. midi.org)

    Natürlich(!) hat sich auch hier ein kleiner Fehler ins Layout eingeschlichen. Der 5V-Anschluss für den Optokoppler ist auf der falschen Seite. Eine kleine Drahtbrücke schafft Abhilfe und ist im eingebauten Zustand nicht mal zu sehen. Der falsch unter Spannung gesetzte Pin des 6N138 ist intern nicht belegt.

    Vorgesehen war die Platine für die Modulgehäuse von icomp, die es aber wohl auch nicht mehr gibt...? :cry:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die Klinkenbuchse sind im Abstand von 17mm zueinander. So hatte ich die vorbereiteten Löcher in den Gehäusen vermessen. Gibt es für die Gehäuse eigentlich Maßzeichnungen? Wär ganz praktisch, ist aber vielleicht auch nicht mehr nötig...

    Die LEDs sind frei platzierbar und ich würde sie in der Nähe der entsprechenden Buchsen ins Gehäuse kleben, nach oben oder nach vorn, und dann per Kabel anschließen.

    Wer all seinen Mut zusammennimmt und die ICs direkt einlötet, bekommt das Interface auch in in einem original Commodore-Gehäuse unter:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Leider sind diese Gehäuse ein paar Millimeter länger (jedenfalls Abstand Schraubenloch-Oberkante), so dass die Buchsen nicht bündig abschließen.

    Bitte melde dich an, um diesen Anhang zu sehen.  Bitte melde dich an, um diesen Anhang zu sehen.

    Also entweder Stecker in "slim" verwenden oder die Löcher so groß bohren, dass das Steckergäuse mit rein passt.

    Bei den icomps enden die Buchsen außerhalb. Da passen dann auch dickere Stecker.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Test

    Nachdem ich in BASIC schon ein paar erfolgreiche "loopback"-Tests absolviert hatte, also über MIDI-OUT Daten ausgeben und über MIDI-IN wieder einlesen, habe ich heute endlich mal Steinbergs Pro16 ausprobiert. Als (ehemaliger) CubaseSX-Nutzer muss ich sagen, es hat hat sich viel getan zwischnen 1986 und 2006. :)

    Ich konnte aufnehmen, abspielen und alles kam richtig an. Auch mit anderer Software funktioniert soweit alles, bis auf das Autodetect-Beispiel aus dem C64-Wiki, was wohl aber an der Abfrage liegt. Auch andere Autodetect-Routinen sind nicht immer zuverlässig, nicht nur mit diesem Interface. Wenn man den jeweiligen Standard manuell auswählt, funktioniert es jedenfalls.

    Als IC-Typen habe ich erfolgreich LS, HC und HCT getestet. Für den 6850 funktionieren alle drei Varianten, da MIDI nur mit 32.5kHz auf dem Datenbus werkelt, muss also kein 68A50 oder gar 68B50 eingesetzt werden. Kann aber. :)


    Sonst so

    Nun hätte mich noch interessiert, ob und wie die Platinen in die Gehäuse von C128Egretz passen. Hab leider keins und 10 Stück waren mir auf gut Glück immer zuviel. Mein Vorrat soll ja final kleiner werden.

    Der Anschluss per Klinkenstecker/-buchse gehört wie schon erwähnt inzwischen zum MIDI-Standard. Wer Geräte hat, die nur 5-pin DIN können, kann sich Adapter selber machen:

    Bitte melde dich an, um diesen Anhang zu sehen.  Bitte melde dich an, um diesen Anhang zu sehen.

    (beide von midi.org)

    TRS bedeutet Tip, Ring, Sleeve und bezeichnet die drei Kontakte eines Stereoklinkensteckers. TRS MIDI A hat T mit Pin 5 der DIN-Variante und R mit Pin 4 verbunden. S ist Masse und Pin 2. TRS MIDI B gibt&gab es auch noch (vor allem bei Geräten von Novation), da sind 4 und 5 bzw. T und R vertauscht. Die meisten haben aber Variante A umgesetzt, weshalb das auch (Quasi-)Standard wurde. Line 6 war glaube ich der Vorreiter und hat das mit 2.5mm Buchsen/Steckern beim "MIDI Mobilizer" für iOS-Geräte erstmals eingesetzt.

    Noch einfacher ist es aber, fertige Kabel zu kaufen. Für Verbindungen zwischen Geräten, die Klinken-Anschlüssen haben, genügen stinknormale Stereo-Klinkenkabel, wobei sich beide Leitungen möglichst innerhalb desselben Schirms befinden sollten. Für Klinke auf DIN gibt es Kabel sowohl mit DIN-Steckern zum direkten Anschluss als auch mit DIN-Buchsen, um normale MIDI-Kabel zu verwenden. Von Befaco gibt es ein 3er Set (z.B. bei Thomann für 11 Euro), sowohl in Variante TRS A als auch B. Die sind ca 1.5m lang und von guter Qualität.

    Wer das Interface nachbauen möchte: ich werde die übrigen Platinen (wie zu sehen schwarz/ENIG) und ein paar Bauteilsätze und 6850 in den Marktplatz stellen. Sollte das auf Interesse stoßen, mach ich auch gern eine kurze Aufbauanleitung.

  • Noch eine kleine BOM

    5x 220R

    1x 1k2 (*)

    1x 5k6 (*)

    5x 100n RM2.5

    1x 1N4148 o.ä.

    1x 2-MHz-Oszillator DIL14

    1x 6N138

    1x 74xx30 (LS, HC, HCT)

    2x 74xx14 (dito)

    1x 74xx74 (*)

    1x 6850 (*)

    3x Klinkenbuchsen (Lumberg 1503-07 oder baugleich)


    optional

    3 Stiftleisten 3pol

    2 Stiftleisten 2x3pol

    5 Jumper ("Kurzschlussbrücken") RM2.5

    (alternativ fest verdrahten)

    IC-Fassungen (4x14p, 1x8p, 1x24p)

    2 LEDs + passende Vorwiderstände

    (*)

    Die beiden Widerstände sind vom Wert her nicht kritisch. Der 1k2 ist ein Pullup am Ausgang des 6N138. Da finden sich viele Schaltungen mit vielen Werten, von 220 Ohm bis 4.7kOhm. Größer als 10k sollte es aber nicht sein, kleiner als 220Ohm auch nicht. Der 5.6k hängt an der Basis des Ausgangstransistors. Auch da findet man alles von 1k bis 10k. Der wird in vielen Schaltungen sogar ganz weggelassen, auch im Datenblatt des 6N138 findet sich kein Hinweis auf dessen Notwendigkeit. Ich habe meine Werte von meinem allerersten MIDI-Projekt (von ucapps.de) übernommen und beibehalten.

    Das FlipFlop 74xx74 wird nur benötigt, wenn man eine andere Konfig als DATEL haben möchte. Das teilt die 2MHz auf 500kHz. Wenn das wegfällt, kann auch der zugehörige 100n-C entfallen.

    Für die Logik-ICs empfehle ich HCT oder LS. Was auch immer am günstigsten oder überhaupt zu bekommen ist. Hab aber auch HC-Typen erfolgreich getestet. (vgl. Final Cartridge 3+) Mischbestückung sollte ebenfalls keine Probleme machen.

    Beim 6850 gehen alle drei Varianten. Das Original war mal von Motorola (MC6850). Baugleiche Modelle heißen EF6850 (Thomson bzw. STM), F6850 (National) usw., jeweils auch als 68A50 und 68B50. Die sind lediglich für höhere Geschwindigkeiten geeignet, weit über der für MIDI notwendigen. Findet man bei z.B. eBay noch recht häufig, wenn auch nicht immer wirklich billig, selbst aus China, es sei denn in größeren Stückzahlen. Hatte bisher keine Ausfälle, was aber vor allem für die Zukunft nichts heißen muss. Ich hab schon Bilder gesehen, wo date code und/oder Bezeichnungen widersprüchlich waren. Der fest eingelötete in meinem Test-Interface ist laut date code von 1980 und war definitiv gebraucht, weshalb ich ihn auch "geopfert" habe. Funktioniert nach wie vor.

  • Kleines Update

    Ich habe noch zwei weitere Interfaces mit HCT-Varianten aufgebaut und mangels Fassungen die ICs direkt eingelötet. Die waren vorher und nach dem Zusammenbau abermals getestet. Das hat alles funktioniert - zunächst. :ninja:

    Als ich den Versuchaufbau (C64 mit SD2IEC, MIDI-Interface, MIDI-Keyboard) so ein paar Minuten habe stehen lassen und zurück kam, war die Bildschirmausgabe gestört. Hm. Woran soll DAS nun gelegen haben? Tasten auf dem MIDI-Keyboard ergaben nach wie vor Töne und Meldungen in der Software (MIDI-Monitor), aber die Darstellung war - eben gestört. Computer aus, wieder an, Software neu geladen, Interface initialisiert - alles gut. Nach ca. 5 Minuten des Spielens lieblichster Melodeien - Zeichenmüll (teilweise), MIDI-Datenverlust (teilweise), irgendwann Absturz (komplett).

    Lange Rede - nach intensiver Analyse stellte sich heraus, dass der 74 HCT74 die vier offenen Steuer-Inputs nicht verkraftet. In den Aufbauten mit Fassungen tritt das Problem nicht auf bzw. musste ich da Fehlfunktionen erzwingen. Keine Ahnung, warum, aber vielleicht genügen die 2mm mehr Abstand zur Platine, dass die offenen Eingänge "stabiler" bleiben. Jedenfalls kippen die Eingänge im direkt eingelöteten Zustand unvorhersehbar hin und her. Da das u.a. auch /RST ist, bleibt im günstigsten Fall der "Antrieb" für den 6850 einfach stehen und nichts geht mehr (Absturz bzw. Ausfall der MIDI-Funktion), im ungünstigeren Fall aber oszilliert das Ganze wild und der 6850 torpediert den Datenbus des Gesamt-Systems. Ungünstig in der Top40-Produktionsumgebung! :D

    Ursprünglich war das Design (auch von mir) mit den LS-Varianten vorgesehen. Die haben hier den Vorteil, dass unbeschaltete Eingäng i.d.R. Chip-intern auf Vcc-Potenzial liegen, jedenfalls nicht "offen" sind. Deshalb gibt es da diese Problem nicht. Sie sind halt nur nicht mehr so häufig/günstig erhältlich wie die HC(T)-Varianten.

    Daher

    1. Easy Fix

    Tausche 74HC(T)74 gegen 74LS74. Problem erledigt. Stundenlang getestet, da bleibt alles stabil.


    2. Very Easy Fix

    Den xx74 gar nicht erst bestücken bzw. aus der Fassung nehmen und das Interface auf "DATEL" konfigurieren, weil das eh von der meisten Software unterstützt oder verlangt wird. Drinlassen geht leider nicht, weil der dann trotzdem oszillieren kann und das vermutlich über die Stromversorgung rückkoppelt oder so. Jedenfalls kam es da auch zu zwar seltenen, aber dann einschneidenden Störungen.


    3. bisschen aufwendigerer Fix

    mehr oder weniger kunstvoll die vier Pins mit Vcc verbinden:

    Bitte melde dich an, um diesen Anhang zu sehen.

    So funktionierts auch mit einem 74HCT74. Auch das nach Stunden (und mehreren Berührungen mit dem Finger) absolut stabil.

    Nun ja. Ist halt der Nachteil von CMOS. Weiß ich eigentlich. Wär auch gar kein Problem im Layout gewesen. :tischkante:

    Bei den anderen ICs ist das übrigens unproblematisch, weil da alle Eingänge benutzt werden bzw. (wie beim 74xx30) auf festem Potenzial liegen. Auch beim xx74er tritt das nicht sofort auf. Hab ja alle ICs getestet vor dem Einbau und vor dem Versand, damit sowas gerade NICHT passiert....

    Daher an alle Käufer: Bitte melden, falls ein LS74 benötigt wird. Gibt es dann als Quasi-Gewährleistungsleistung. :)

  • Noch ein Update

    Ich habe nun noch drei Interfaces aus "Resten" zusammengeklöppelt. Siehe Bitte melde dich an, um diesen Link zu sehen..

    Da die Klinkenbuchsen zur Neige gingen, wollte ich welche nachkaufen und musste feststellen, dass Lumberg mal eben die Produktion eingestellt hat. :thumbdown: Das Modell 1503-07 gibt es also nur noch im Abverkauf.

    Das Nachfolgemodell (soweit ersichtlich baugleich) heißt 1503-30 und ist noch nirgends erhältlich, wo ich einkaufe.

    Da wurden sicher die "Produktionsprozesse optimiert", um noch ein paar halbe Cents zu sparen, dafür wird der VK dann um 50% erhöht. Ich liiiebe es.

    Zur Not kann man ja auch Kabel direkt anlöten...