Midi-Keyboard

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Moin.

Vor einigen Wochen habe ich im Keller ein Keyboard entdeckt.

Nachdem ich mir den Formant-Synthesizer von Elektor gebaut hatte, der nur monophon und nicht anschlagsdynamisch war, wollte ich was polyphones und anschlagsdynamisches bauen und hatte mir damals dieses Keyboard gekauft:
Keyboard.JPG

Es hat eine Diodenmatrix und Umschaltkontakte für die Anschlagsdynamik.

Matrix.JPG

Bald darauf hatte ich einen Atari ST und die erste Version von Cubase, so blieb das Keyboard erst mal liegen.
Dann kam 1987 ein preiswerter Midi-Expander raus, der Roland MT-32. Damit hatte man an der Midi-Schnittstelle vom Atari schon ein ganzes Orchester. Nur ein Eingabegerät fehlte noch.
Kurz darauf kam dann noch ein Ensoniq ESQ1 dazu. 8 Kanal polyphon, anschlagsdynamisch, digital/analog Synthesizer mit Wavetable, ähnlich wie 8 Mini-Moogs, nur in einem Gehäuse.

Das Keyboard wanderte also erstmal in den Keller.
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Nun habe ich es wiederentdeckt. Die Kontakte sehen zwar nicht mehr besonders gut aus,
Kontakte.JPG
aber nach Durchmessen, gehen sie noch überraschend gut.

Das ESQ1 steht inzwischen meistens in der Ecke. Das 15 kg Teil jedesmal auf den Ständer zu wuchten, um ab und zu mal 'ne halbe Stunde zu klimpern, unterbleibt meistens.

Also bauen wir uns doch ein leichtes Midi-Keyboard.
Mit 'ner über 30 Jahre alten Tastatur.

Wenn schon alt, dann richtig. Weitestgehend nur Teile verwenden, die hier schon seit Jahren rumfliegen. Stilgerecht wäre dann ja der 68705 gewesen. Das war die EPROM-Version des 6805 µControllers von Motorola.

68705-1.JPG

Gab es maskenprogrammiert ab einigen 10.000 Stück, OTP war die billigste, damit wäre die Programmentwicklung aber recht teuer geworden. Die Piggyback-Version war die teuerste, irgendwo habe ich davon auch noch einen in einem Incircuit-Emulator.
Hier mal ein Blick auf das Innenleben der EPROM-Version:

68705-2.JPG

Oben ist das EPROM, rechts unten das RAM und links die CPU und der Rest.
Schon faszinierend, daß man den Chip durch das Quarz-Fenster direkt sehen kann.
Hier nochmal ein etwas größerer Ausschnitt:

68705-3.JPG

Nur hätte ich dafür einen Atari reaktivieren müssen und hoffen, daß die 20-30 Jahre alten Disketten noch lesbar sind und ein EPROM-Löschgerät besorgen müssen und ...
und da habe ich mich dann der Einfachheit halber für einen noch nicht ganz so alten mega48 entschieden. Mit dem Flash, den man in wenigen Sekunden neu beschreiben kann, ist das doch eine wesentliche Erleichterung gegenüber den 20 Minuten EPROM löschen, bis man es neu programmieren kann.

Soweit erstmal, demnächst geht es weiter.
 

TommyB

Team Bitschubse
Premium Benutzer
17 Mai 2010
2.151
80
48
36
127.0.0.1 ;)
Sprachen
C#, VB.Net, LunaAVR, Assembler, Python
Hui, du hast noch ein Roland MT-32? Dann behalt den mal, der ist selbst nach heutigen Standards immer noch top.
Wer den nicht kennt:
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Hat's hier zur Zeit recht wenig. Und wie lange die Sonne zum löschen braucht, weiß ich nicht. Mit Löschgerät dauert jeder Programmierzyklus ca. 'ne halbe Stunde, gegenüber ein paar Sekunden beim Flash und dann müßte ich mir auch noch einen Programmer bauen und nachschauen, ob die Disketten auf denen ich den Cross-Assembler habe überhaupt noch lesbar sind.

Und außerdem programmiere ich inzwischen auch viel lieber in C ... :p

Vielleicht gefällt Dir ja der Befehlssatz, ca. 50 Befehle mit bis zu 6 Adressierungsarten.
6805InstructionSet.png
Mit einem 8-bit Akku und einem 8-bit Indexregister könntest Du Dich doch mal so richtig austoben. :aetsch:

Ich fand es etwas sehr umständlich. Der 6809 und 68000 haben mir wesentlich mehr zugesagt, gab es damals aber nur als Prozessor und nicht als Controller. Seit '85 der Atari ST rauskam, programmiere ich fast nur noch in C.

Gegen Ende der 80er war der 6805 einer der wenigen erschwinglichen Mikrocontroller. Entwicklungssyteme dafür preislich jenseits von Gut und Böse. Da habe ich mir auf dem Atari einen Cross-Assembler in C geschrieben. Ich weiß nicht, ob es inzwischen einen C-Compiler dafür gibt. Selberschreiben wäre mir dann doch zu aufwendig.
Viele Gründe sprechen für AVR.
Warum eigentlich den 48
Soviel wie nötig. Für die Tasterabfrage, Midi-Ausgabe und kurze Texte hätte der 48 dicke gereicht. Etwas ausführlichere Texte und die umfangreichen Farbtabellen für die LEDs machten dann einen Wechsel auf den 88 erforderlich. Und falls ich noch mehr einbauen will, ist ja nach oben noch Luft.
Ob das Alu ist, kann ich Dir auch nicht sagen, nach Gold sieht es jedenfalls nicht aus.
Das Material sieht bei Tageslicht warm aus, wie Nickel oder Silber. Alu eher kalt, wie Chrom.
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Dann behalt den mal, der ist selbst nach heutigen Standards immer noch top.
Das werde ich tun. Mit einem geeigneten Editor soll man sogar eigene Sounds erstellen können. Die eingebauten haben mir aber bisher gereicht.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3.341
61
48
Marwitz
Sprachen
BascomAVR, Assembler
könntest Du Dich doch mal so richtig
Nee laß mal, ich bleib lieber bei der Harvard-Architektur...
machten dann einen Wechsel auf den 88 erforderlich
eben...als Hobby-Programmierer besorg ich mir doch nicht mehrere Ausstattungsvarianten desselben Controllers. Ab dem 168 haste 'ne doppelt so breite IVT.

Wenn Dich doch noch der Retro-Trip packt, und Du mehr Speicher (UV-EPROM) brauchst, kann ich Dir auch einen AM27C040-155DC oder einen NMC27C64Q-200 überlassen...
(wobei die Dinger in Auktionshäusern langsam zu'ner Wertanlage zu werden scheinen)
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Warum sollte ich mir nicht mal 'ne Stange zum Spielen hinlegen, wenn ich sie grade günstig bekomme? ;)

einen AM27C040-155DC oder einen NMC27C64Q-200
Danke, EPROMs habe ich selber noch ein paar Stangen.
Der 6805 hat knapp 8k EPROM und rund 200 Bytes RAM und man kann keinen externen Speicher anschließen.


Edit: Fehlerkorrektur
 
Zuletzt bearbeitet:

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Weiter im Text:

Die Tastatur hat 61 Tasten, die in Gruppen zu je acht Tasten eingeteilt sind, wobei der letzten Gruppe drei Tasten fehlen.
Die Mittelanschlüsse der Wechseltaster von jeder Gruppe sind über je eine Diode mit der Anode zusammen an einen Pin der Steckerleiste geführt. Die Kathode liegt in Ruhestellung am oberen Kontakt, bei gedrückter Taste am Unteren.
Die 2 x (64 – 3) Kontakte sind so auf 16 weitere Pins der Steckerleiste geführt, das es eine 16 x 8 Matrix ergibt, d.h. von der 26-poligen Steckerleiste sind 24 Pins belegt. Und man kann gleich noch sechs Einzeltaster für die Bedienung zusammen mit der Matrix abfragen.
So bietet es sich an, die je 8 oberen und unteren Gruppen mit zwei 74LS138 durchzuschalten und die Tasterzustände über einen 8-bit Port hintereinanderweg in eine 16 x 8 Bit Matrix einzulesen und diese 16 Byte, die alle Informationen über die Tastenzustände enthalten, dann anschließend auszuwerten. Mit einem Chipselect und vier Adressbits für die 138er brauche ich für die gesamte Matrix inklusive der sechs Einzeltaster dreizehn Portpins.
Matrix1.png
An allen Kreuzungspunkten sitzen Taster. Um sie zu entkoppelt sind Dioden nötig. Da aber jede Taste einen Wechseltaster hat (ein Öffner und ein Schließer) und daher immer nur einer der beiden Taster geschossen sein kann, reicht für jede Taste eine Diode. Die sechs Einzeltaster hingegen brauchen jeder eine Diode.

Als Anzeige dient ein LCD. Vor einiger Zeit hatte ich eins mit RGB-Backlight gekauft, nur um mal zu sehen, wie das aussieht, aber bisher noch keine Verwendung dafür gefunden. Wenn die einzelnen Menüpunkte mit verschiedenen Farben hinterlegt werden, kann man sie auf den ersten Blick gut unterscheiden. Dazu noch ein paar DA-Wandler um die LEDs anzusteuern.

Ein paar Platinenreste, Steckerleisten, Kondensatoren und Widerstände und das Ganze sieht dann so aus:
PlatineOben.JPG
Mit 5V Versorgungsspannung ist die Helligkeit der verschiedenfarbigen LEDs doch sehr unterschiedlich, daher verwende ich ein Steckernetzteil mit 7-9V und habe den Spannungsregler für die restliche Schaltung auf die Rückseite des Displays gesetzt, zusammen mit den Stromquellen für die LEDs.

Ein bißchen Platz für Erweiterungen wäre auf der Hauptplatine auch noch.

Für das Einzelstück ein Layout zu machen hätte wahrscheinlich länger gedauert, als das Ganze in bewährter Fädeltechnik auszuführen (ganz zu schweigen von Preis und/oder Lieferzeit der Platine).
PlatineUnten.JPG
Jetzt fehlt noch ein passendes Gehäuse.
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Falls noch jemanden interessiert, wie es weiterging:

nach zwei Tagen für die Schaltung,
zwei Tagen zusammenlöten
und einer Woche programmieren,
habe ich noch zwei Wochen für's Gehäuse gebraucht.

Das verwendete Werkzeug (nein, nichtmal die Bohrmaschine wird elektrisch betrieben ;))

Werkzeug.JPG

Aus Resten vom Korkparkett, einem Stück Klavierband. ein paar Winkeln und Schrauben wurde dann ein Gehäuse.

Platinen eingebaut und angeschlossen:
Innenleben.JPG

KorK
Midi-Keyboard an Korg M3R Midi-Expander:

KorkMidiKeyboard.JPG

Nach einer Nachbesserung zum Entprellen der doch schon ziemlich vergammelten Kontakte, funktioniert es überraschend gut.

Jetzt habe ich wieder ein Gerät mehr, was in der Ecke steht. Nur wiegt es mit seinen knapp 5 kg weniger als ein Drittel des ESQ1 und wird damit dann doch etwas öfter benutzt.
 
  • Like
Wertungen: TommyB und Dirk

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Incircuit-Emulator
Er ist wieder aufgetaucht.
8092
Rechts wird ein 40-poliges Flachbandkabel zur Verbindung zum Atari ST angeschlossen. Links ein Flachbandkabel mit einem 40-poligen DIL-Stecker, der in den in Entwicklung befindlichen Prototypen gesteckt wird. Links oben unter dem 28-poligen DIL-Stecker befindet sich der 68EM05, die Piggyback-Ausführung des 6805.
8093
Darunter das RAM, das wiederum per Flachbandkabel und DIL-Stecker mit der EPROM-Fassung des Controllers darüber verbunden ist.
Es ist sozusagen, ein Emulator im Emulator. Das RAM emuliert das EPROM und die gesamte Schaltung emuliert den Controller im Prototyp.
Das Hühnerfutter rechts daneben sind Register, Zähler und Multiplexer um das RAM zu füllen.

Das Ganze natürlich in der bewährten Fädeltechnik.
8094
 
  • Like
Wertungen: Ditron

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
ich bleib lieber bei der Harvard-Architektur...
Ich fand es eher schade, daß die AVRs keine von-Neumann-Architektur haben. Da konnte man einfach Programme ins RAM laden und ausführen.
Aber bei den neueren Controllern mit flash ist das nicht mehr so wichtig, die kann man jederzeit umprogrammieren.

Obwohl… grade für einen Assemblerprogrammierer müßte es doch sehr interessant sein, Programme schreiben zu können, die sich selbst modifizieren.
Ich kann mich zwar nur noch an eine Anwendung erinnern, wo das sehr sinnvoll war, aber ich kann mir auch vorstellen, daß man damit manchmal eine ganze Menge Programmcode einsparen könnte.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3.341
61
48
Marwitz
Sprachen
BascomAVR, Assembler
es doch sehr interessant sein, Programme schreiben zu können, die sich selbst modifizieren.
Naja, grundsätzlich können das die meisten doch - die, insbesondere bei Arduino usw beliebten, Bootloader machen genau genommen doch nichts anderes. Ein Teilprogramm im Flash, welches Code im Flash überschreiben kann.

SPM halt. Und bei irgend'nem Tiny (X-Core ?) hab ich auch mal gelesen, daß dort Flash wie SRAM beschrieben werden kann, mit ST (aber das war noch ein sehr frühes Datenblatt - k.A. obs stimmt.)

Möglicherweise lehne ich mich ja damit weit aus dem Fenster, aber meiner Meinung nach realisieren die meisten hier lediglich recht primitive Zustandsautomaten mit den Controllern - wenn der Code einmal drin ist, wird er "Jahrzehnte" nicht mehr geändert...

Oder es wird experimentiert/gebastelt/gespielt...
 

Mikro23

Aktives Mitglied
2 Jan 2017
365
33
28
Großraum Hannover
Sprachen
C, Assembler
Naja, grundsätzlich können das die meisten doch
Nun, ich dachte hier eher an ein Programm, daß eine oder mehrere bestimmte Programmspeicherzellen (z.B. eine Sprungadresse) tausende Male pro Sekunde überschreibt. Das geht im RAM auch nach zehn Jahren noch, der flash-Speicher würde nach ein paar Minuten seinen Geist aufgeben…
Wenn man nur alle paar Tage einen neuen Programmteil laden will, geht das natürlich so wie Du es beschrieben hast.
Möglicherweise lehne ich mich ja damit weit aus dem Fenster, aber meiner Meinung nach realisieren die meisten hier lediglich recht primitive Zustandsautomaten mit den Controllern - wenn der Code einmal drin ist, wird er "Jahrzehnte" nicht mehr geändert...
Das gilt wohl für die meisten Controller, die für einen bestimmten Zweck benutzt werden, die werden nur einmal in ihrem Leben programmiert und danach nie wieder, außer
es wird experimentiert/gebastelt/gespielt...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)