Jump to content

DIY Masterkeyboard Midi, USB und CV-Gate


Acul
 Share

Recommended Posts

Richtig Stromversorgung über pc wegen der direkten anbindung an die Software. Also ist ein USB Hub mit Externer Stromversorgung wichtig für die weitere Arbeit. Werde ich gleich Noch mal besorgen.

Verkabelung ist nun wieder so wie du beschrieben hast.

Die Software ist die invertierte.

Link to comment
Share on other sites

  • Replies 201
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

ich habe nun nochmals die verkabelung umgesteckt und zwar

Dout pin1 = d7

pin8 = D0

Din Pin1 =D7

Pin8 =D0

nun schreibt ehr bei jedem tastendruck

[126854.530] KB1: row=0, column=0, depressed=1 --> key=0, early_contact:1, note_number=36

[126854.531] KB1: row=1, column=0, depressed=1 --> key=0, early_contact:0, note_number=36

[126854.531] DEPRESSED key=0

[126854.532] KB1: row=2, column=0, depressed=1 --> key=8, early_contact:1, note_number=44

[126854.533] KB1: row=3, column=0, depressed=1 --> key=8, early_contact:0, note_number=44

[126854.533] DEPRESSED key=8

[126854.534] KB1: row=4, column=0, depressed=1 --> key=16, early_contact:1, note_number=52

[126854.535] KB1: row=5, column=0, depressed=1 --> key=16, early_contact:0, note_number=52

[126854.535] DEPRESSED key=16

[126854.536] KB1: row=6, column=0, depressed=1 --> key=24, early_contact:1, note_number=60

[126854.536] KB1: row=7, column=0, depressed=1 --> key=24, early_contact:0, note_number=60

[126854.537] DEPRESSED key=24

[126854.538] KB1: row=8, column=0, depressed=1 --> key=32, early_contact:1, note_number=68

[126854.538] KB1: row=9, column=0, depressed=1 --> key=32, early_contact:0, note_number=68

[126854.539] DEPRESSED key=32

[126854.540] KB1: row=10, column=0, depressed=1 --> key=40, early_contact:1, note_number=76

[126854.540] KB1: row=11, column=0, depressed=1 --> key=40, early_contact:0, note_number=76

[126854.541] DEPRESSED key=40

[126854.542] KB1: row=12, column=0, depressed=1 --> key=48, early_contact:1, note_number=84

[126854.542] KB1: row=13, column=0, depressed=1 --> key=48, early_contact:0, note_number=84

[126854.543] DEPRESSED key=48

[126854.544] KB1: row=14, column=0, depressed=1 --> key=56, early_contact:1, note_number=92

[126854.544] KB1: row=15, column=0, depressed=1 --> key=56, early_contact:0, note_number=92

[126854.545] DEPRESSED key=56

[126855.043] KB1: row=7, column=0, depressed=0 --> key=24, early_contact:0, note_number=60

[126855.043] PRESSED key=24, delay=16213, velocity=1

[126855.045] KB1: row=0, column=0, depressed=0 --> key=0, early_contact:1, note_number=36

[126855.046] KB1: row=1, column=0, depressed=0 --> key=0, early_contact:0, note_number=36

[126855.046] PRESSED key=0, delay=0, velocity=127

[126855.047] KB1: row=2, column=0, depressed=0 --> key=8, early_contact:1, note_number=44

[126855.048] KB1: row=3, column=0, depressed=0 --> key=8, early_contact:0, note_number=44

[126855.048] PRESSED key=8, delay=0, velocity=127

[126855.049] KB1: row=4, column=0, depressed=0 --> key=16, early_contact:1, note_number=52

[126855.050] KB1: row=5, column=0, depressed=0 --> key=16, early_contact:0, note_number=52

[126855.050] PRESSED key=16, delay=0, velocity=127

[126855.051] KB1: row=6, column=0, depressed=0 --> key=24, early_contact:1, note_number=60

[126855.052] KB1: row=8, column=0, depressed=0 --> key=32, early_contact:1, note_number=68

[126855.053] KB1: row=9, column=0, depressed=0 --> key=32, early_contact:0, note_number=68

[126855.053] PRESSED key=32, delay=0, velocity=127

[126855.054] KB1: row=10, column=0, depressed=0 --> key=40, early_contact:1, note_number=76

[126855.055] KB1: row=11, column=0, depressed=0 --> key=40, early_contact:0, note_number=76

[126855.056] PRESSED key=40, delay=0, velocity=127

[126855.056] KB1: row=12, column=0, depressed=0 --> key=48, early_contact:1, note_number=84

[126855.057] KB1: row=13, column=0, depressed=0 --> key=48, early_contact:0, note_number=84

[126855.058] PRESSED key=48, delay=0, velocity=127

[126855.059] KB1: row=14, column=0, depressed=0 --> key=56, early_contact:1, note_number=92

[126855.059] KB1: row=15, column=0, depressed=0 --> key=56, early_contact:0, note_number=92

[126855.060] PRESSED key=56, delay=0, velocity=127

Taste kurz angeschlagen und losgelassen

habe an der platine noch nichts verändert.

Ist aber nur bei der Invertierten Software so.

Ich habe ja noch eine platine der alten version

die werde ich später dann aufbauen.

welche brücken muss ich weg lassen und kann ich die mit der neuen dout platine zusammen verwenden ?

Edited by Acul
Link to comment
Share on other sites

Wie gesagt: bitte genau so verdrahten wie in meinem Schaltplan beschrieben, lediglich die Dioden sind gedreht und deshalb muss das DINX4 Modul modifiziert werden.

Alle anderen Experimente sind wertfrei... ;-)

mbhp_dinx4_inv_pulls.gif

Gruss, Thorsten.

Link to comment
Share on other sites

so habe nun die ältere din platine aufgebaut so wie besprochen.

(habe nur die halbe platine aufgebaut da mehr ja nicht nötig ist im moment)

nun kann ich jede 2. taste einmal drücken und es kommt

[152739.740] PRESSED key=23, delay=1644, velocity=1

[152739.763] KB1: row=5, column=6, depressed=0 --> key=22, early_contact:0, note_number=58

[152739.763] PRESSED key=22, delay=1147, velocity=1

[152742.760] KB1: row=5, column=7, depressed=1 --> key=23, early_contact:0, note_number=59

[152742.760] DEPRESSED key=23

[152742.765] KB1: row=5, column=6, depressed=1 --> key=22, early_contact:0, note_number=58

[152742.765] DEPRESSED key=22

key nummer natürlich immer eine andere.

Angeschlossen ist alles wie auf dem schaltplan weiter oben.

Software ist die Invertierte version.

Edited by Acul
Link to comment
Share on other sites

Ich kann mir leider mit den gegebenen Informationen gerade nicht vorstellen, wo genau das Problem liegt.

Zwei Kontakte werden geschlossen und wieder geoeffnet, doch die Key-Nummern passen nicht zueinander.

Eigentlich kann das nur dann passieren, wenn die Schalter falsch angeschlossen wurden (bspw. um einen Pin verschoben, entweder am DIN oder DOUT)

Gruss, Thorsten.

Link to comment
Share on other sites

so habe nun nochmal die Pinbelegung geändert da bei der Fatar der erste Pin "Final Contact" (Make) ist und der 2. "Early Contact" (Break) ist.

Somit muss auch die belegung umgeändert werden am Din modul.

nun sendet mios bei jedem tastendruck "etwas" und auch wenn man die taste immer wieder drückt immer das selbe.

[228259.034] KB1: row=0, column=7, depressed=1 --> key=7, early_contact:1, note_number=43

[228259.035] KB1: row=1, column=7, depressed=1 --> key=7, early_contact:0, note_number=43

[228259.035] DEPRESSED key=7

[228259.036] KB1: row=2, column=7, depressed=1 --> key=15, early_contact:1, note_number=51

[228259.037] KB1: row=3, column=7, depressed=1 --> key=15, early_contact:0, note_number=51

[228259.037] DEPRESSED key=15

[228259.038] KB1: row=4, column=7, depressed=1 --> key=23, early_contact:1, note_number=59

[228259.039] KB1: row=5, column=7, depressed=1 --> key=23, early_contact:0, note_number=59

[228259.039] DEPRESSED key=23

[228259.040] KB1: row=6, column=7, depressed=1 --> key=31, early_contact:1, note_number=67

[228259.041] KB1: row=8, column=7, depressed=1 --> key=39, early_contact:1, note_number=75

[228259.041] KB1: row=9, column=7, depressed=1 --> key=39, early_contact:0, note_number=75

[228259.042] DEPRESSED key=39

[228259.043] KB1: row=10, column=7, depressed=1 --> key=47, early_contact:1, note_number=83

[228259.044] KB1: row=11, column=7, depressed=1 --> key=47, early_contact:0, note_number=83

[228259.044] DEPRESSED key=47

[228259.045] KB1: row=12, column=6, depressed=1 --> key=54, early_contact:1, note_number=90

[228259.045] KB1: row=12, column=7, depressed=1 --> key=55, early_contact:1, note_number=91

[228259.046] KB1: row=13, column=6, depressed=1 --> key=54, early_contact:0, note_number=90

[228259.047] DEPRESSED key=54

[228259.048] KB1: row=13, column=7, depressed=1 --> key=55, early_contact:0, note_number=91

[228259.048] DEPRESSED key=55

[228259.049] KB1: row=14, column=6, depressed=1 --> key=62, early_contact:1, note_number=98

[228259.049] KB1: row=14, column=7, depressed=1 --> key=63, early_contact:1, note_number=99

[228259.050] KB1: row=15, column=6, depressed=1 --> key=62, early_contact:0, note_number=98

[228259.051] DEPRESSED key=62

[228259.052] KB1: row=15, column=7, depressed=1 --> key=63, early_contact:0, note_number=99

[228259.052] DEPRESSED key=63

[228259.053] KB1: row=0, column=6, depressed=1 --> key=6, early_contact:1, note_number=42

[228259.053] KB1: row=1, column=6, depressed=1 --> key=6, early_contact:0, note_number=42

[228259.054] DEPRESSED key=6

[228259.055] KB1: row=2, column=6, depressed=1 --> key=14, early_contact:1, note_number=50

[228259.056] KB1: row=3, column=6, depressed=1 --> key=14, early_contact:0, note_number=50

[228259.056] DEPRESSED key=14

[228259.057] KB1: row=4, column=6, depressed=1 --> key=22, early_contact:1, note_number=58

[228259.058] KB1: row=5, column=6, depressed=1 --> key=22, early_contact:0, note_number=58

[228259.058] DEPRESSED key=22

[228259.059] KB1: row=6, column=6, depressed=1 --> key=30, early_contact:1, note_number=66

[228259.060] KB1: row=8, column=6, depressed=1 --> key=38, early_contact:1, note_number=74

[228259.060] KB1: row=9, column=6, depressed=1 --> key=38, early_contact:0, note_number=74

[228259.061] DEPRESSED key=38

[228259.062] KB1: row=10, column=6, depressed=1 --> key=46, early_contact:1, note_number=82

[228259.062] KB1: row=11, column=6, depressed=1 --> key=46, early_contact:0, note_number=82

[228259.062] DEPRESSED key=46

[228259.101] KB1: row=0, column=6, depressed=0 --> key=6, early_contact:1, note_number=42

[228259.101] KB1: row=1, column=6, depressed=0 --> key=6, early_contact:0, note_number=42

[228259.102] PRESSED key=6, delay=0, velocity=127

[228259.103] KB1: row=2, column=6, depressed=0 --> key=14, early_contact:1, note_number=50

[228259.104] KB1: row=3, column=6, depressed=0 --> key=14, early_contact:0, note_number=50

[228259.104] PRESSED key=14, delay=0, velocity=127

[228259.105] KB1: row=4, column=6, depressed=0 --> key=22, early_contact:1, note_number=58

[228259.106] KB1: row=5, column=6, depressed=0 --> key=22, early_contact:0, note_number=58

[228259.107] PRESSED key=22, delay=0, velocity=127

[228259.108] KB1: row=6, column=6, depressed=0 --> key=30, early_contact:1, note_number=66

[228259.109] KB1: row=8, column=6, depressed=0 --> key=38, early_contact:1, note_number=74

[228259.109] KB1: row=9, column=6, depressed=0 --> key=38, early_contact:0, note_number=74

[228259.110] PRESSED key=38, delay=0, velocity=127

[228259.111] KB1: row=9, column=7, depressed=0 --> key=39, early_contact:0, note_number=75

[228259.111] PRESSED key=39, delay=0, velocity=127

[228259.112] KB1: row=10, column=6, depressed=0 --> key=46, early_contact:1, note_number=82

[228259.113] KB1: row=10, column=7, depressed=0 --> key=47, early_contact:1, note_number=83

[228259.114] KB1: row=11, column=6, depressed=0 --> key=46, early_contact:0, note_number=82

[228259.114] PRESSED key=46, delay=0, velocity=127

[228259.115] KB1: row=11, column=7, depressed=0 --> key=47, early_contact:0, note_number=83

[228259.115] PRESSED key=47, delay=0, velocity=127

[228259.116] KB1: row=12, column=6, depressed=0 --> key=54, early_contact:1, note_number=90

[228259.117] KB1: row=12, column=7, depressed=0 --> key=55, early_contact:1, note_number=91

[228259.118] KB1: row=13, column=6, depressed=0 --> key=54, early_contact:0, note_number=90

[228259.118] PRESSED key=54, delay=-1, velocity=127

[228259.119] KB1: row=13, column=7, depressed=0 --> key=55, early_contact:0, note_number=91

[228259.120] PRESSED key=55, delay=0, velocity=127

[228259.121] KB1: row=14, column=6, depressed=0 --> key=62, early_contact:1, note_number=98

[228259.121] KB1: row=14, column=7, depressed=0 --> key=63, early_contact:1, note_number=99

[228259.122] KB1: row=15, column=6, depressed=0 --> key=62, early_contact:0, note_number=98

[228259.123] PRESSED key=62, delay=0, velocity=127

[228259.124] KB1: row=15, column=7, depressed=0 --> key=63, early_contact:0, note_number=99

[228259.124] PRESSED key=63, delay=0, velocity=127

[228259.125] KB1: row=0, column=7, depressed=0 --> key=7, early_contact:1, note_number=43

[228259.126] KB1: row=1, column=7, depressed=0 --> key=7, early_contact:0, note_number=43

[228259.126] PRESSED key=7, delay=0, velocity=127

[228259.127] KB1: row=2, column=7, depressed=0 --> key=15, early_contact:1, note_number=51

[228259.128] KB1: row=3, column=7, depressed=0 --> key=15, early_contact:0, note_number=51

[228259.129] PRESSED key=15, delay=0, velocity=127

[228259.129] KB1: row=4, column=7, depressed=0 --> key=23, early_contact:1, note_number=59

[228259.130] KB1: row=5, column=7, depressed=0 --> key=23, early_contact:0, note_number=59

[228259.131] PRESSED key=23, delay=0, velocity=127

[228259.132] KB1: row=6, column=7, depressed=0 --> key=31, early_contact:1, note_number=67

[228259.132] KB1: row=8, column=7, depressed=0 --> key=39, early_contact:1, note_number=75

erscheint mir aber immer noch falsch beim genauen betrachten oder ?

Link to comment
Share on other sites

Meinst Du, dass diese PRESSED (=gedrueckt) und DEPRESSED (=losgelassen) Meldungen ausgegeben werden, wenn eine einzige Taste gedrueckt wird?

Ich schau mal in meine Kristallkugel, und die sagt mir, dass dies wohl der Fall war - zumindest deuten darauf die Timestamps hin, denn es ist quasi unmoeglich, soviele Tasten innerhalb von 100 mS zu bedienen. Oder hast Du hier gerade mal mit der Hand draufgehauen? Die ist leider nicht auf dem Bild ;-)

Ich schaue nochmal rein, und bemerke, dass von Column (=Spalte, von DOUT getrieben) 6 und 7 jeweils alle Rows von 0..15 (= Zeile, von den DINs abgelesen) wackeln.

Mein wahrsagerisches Gespuer sagt mir nun, dass an einer Stelle (aber nicht an allen Pins) Row und Column vertauscht wurden.

Jetzt ist das Bild leider wieder unklar geworden.

Gruss, Thorsten.

Link to comment
Share on other sites

Hallo,

wie ich sehe nimmt euer Projekt langsam Form an. :twitch:

Ich wollt mal vorsichtig fragen ob es was für meine Sammelschienenproblematik geben wird. Meine alte Orgel hat ja nicht die zwei Taster (beak/make) sondern schaltet zwischen zwei Potentialen. Jetzt fang ich an, wieder alles zusammen zu bauen und muss wissen wie ich die Tastatur baue.

Ich könnte die Sammelschiene so teilen, dass es eine 8x8 Tastatur wird, besser 16x16 bzw. 4x16, weil ich nur 49 Tasten habe -> dafür hab ich zwei Tastaturen. Da fällt mir ein, es wär cool, wenn man die zweite so umschalten kann, dass sie wahlweise als Erweiterung der ersten ist, also 8 Oktaven, aber ich schweife ab ...

Wenn ich die Sammelschienen teile, könnte das dann so wie in meiner Skizze aussehen, mehr ist von der Hardware nicht drin.

Geht das was zu machen? Ist ja eher ne Softwaregeschichte ...

Leider kann ichs noch nicht testen, weil ich erst die Teile für den Sid gekauft habe und das als späteres Projekt betreiben wollte. Wenn's jedoch ein MUSS wird, müsste ich ich meine Prios noch mal überdenken.

Weil SID ohne Tastatur macht auch kein Spaß - und mein Juno D will auch nicht mehr (Gummikontake hinüber :cry: Die Hälfte der Tasten gehn nimmer richtig.)

Matrix.bmp

Link to comment
Share on other sites

Ja, es muesste genau so funktionieren, wie Du es skizziert hast.

Die Software-Option laesst sich ohne grossen Aufwand in die Firmware integrieren - ich halte sie auch fuer sinnvoll, da sie auch fuer andere Anwendungsfaelle hilfreich sein konnte (bspw. Drumpads)

MBKB unterstuetzt uebrigens von Haus aus zwei Tastaturen, Du kannst sie also auch trennen wenn es Sinn macht (Vorteil: sie lassen sich dann auch unabhaengig transponieren und/oder auf verschiedene MIDI Kanaele legen)

Gruss, Thorsten.

Link to comment
Share on other sites

Mir ist noch was aufgefallen:

Ich habe ja 49 Tasten (4 Oktaven + C5) und egal wie ich es anschließen werde (8x8 oder 16x16), es bleiben ja immer Verbindungen unbenutzt (also ohne Taste), wie bei euch auch.

Da aber bei mir die nichtgedrückten Tasten das (ich nenn es mal) "Note off" Signal haben, müsste ich dann auch die nicht benutzten Verbindungen per Diode auf dieses Signal ziehen, oder?

Bei der 8x8-Variante wären das glaub ich 15 Dioden, bei 16x16 ganz viele. Eigentlich wollte ich die 16x16 machen und nur 4x16 benutzen weil's sich es von der Hardware angeboten hätte...

Ronny

Edited by ADK
Link to comment
Share on other sites

  • 2 weeks later...

Sorry! Ich habe die Frage erst jetzt gesehen:

Da aber bei mir die nichtgedrückten Tasten das (ich nenn es mal) "Note off" Signal haben, müsste ich dann auch die nicht benutzten Verbindungen per Diode auf dieses Signal ziehen, oder?

Bei der 8x8-Variante wären das glaub ich 15 Dioden, bei 16x16 ganz viele. Eigentlich wollte ich die 16x16 machen und nur 4x16 benutzen weil's sich es von der Hardware angeboten hätte...

Stimmt nicht ganz - fuer jeden Kontakt ist eine Diode notwendig, d.h. bei einem Keyboard mit Velocity (= 2 Kontakte) zwei Dioden pro Taste, und ohne Velocity eine Diode pro Taste.

Mit der Diode wird verhindert, dass DINs ueberbrueckt werden, wenn mehrere Tasten gleichzeitig gedrueckt werden (-> "Geisternoten")

So, es gibt noch etwas neues. Nachdem ich mit Acul letztens das Fatar-Keyboard ans Laufen gebracht habe, ist mir bewusst geworden, wie umstaendlich und fehlertraechtig die Verdrahtung ist, vor allem dann, wenn auch noch die Pull-Polaritaet geaendert werden muss.

Das will ich Euch (und mir) nicht antun - deshalb habe ich ein spezielles Layout erstellt, dass zwei DIN und zwei DOUT Register vereint:

mbhp_dio_matrix_v1.png

Features:

  • J1 und J2 sind kompatibel zum DIN/DOUT Modul, es lassen sich sowohl mehrere "MBHP_DIO_MATRIX" Module, als auch mehrere DIN/DOUT Module kaskadieren.
  • die Pinbelegung von J3 und J4 ist 1:1 kompatibel zum Fatar Keyboard!
  • die 220 Ohm Widerstaende an den DOUTs entfallen, da sie fuer die Matrix-Verschaltung nicht notwendig sind
  • 10k Pull-Devices sind ueber J6 konfigurierbar (Pull-Up oder Pull-Down)
  • das Board ist auch fuer andere Anwendungsfaelle geeignet, man kann bspw. auch LEDs anschliessen, entweder in Matrix oder Direkt-Verschaltung (die Widerstaende muessen dann extern verloetet werden)
  • mit J5 ist +5V und GND direkt verfuegbar, bspw. fuer Direktverschaltung von LEDs und Buttons (ohne Matrix)

Das Board ist 8x4 cm gross, somit passen 5 davon auf das Europlatinenmass (4, falls Olimex wirklich auf 16x10 besteht und 5, wenn Olimex es nicht so genau nimmt ;-))

Die Prototypen werde ich diesmal bei Olimex (sitzt in Bulgarien) bestellen.

Der Preis wird zusammen mit den Versandkosten ca. 40 EUR betragen, also 8 EUR pro PCB - akzeptabel! :)

Die ersten 5 PCBs sind uebrigens schon vergeben, doch wer moechte kann sich ja dann spaeter auch mit anderen Leuten zusammentun und direkt bei Olimex bestellen.

Gruss, Thorsten.

Link to comment
Share on other sites

Stimmt nicht ganz - fuer jeden Kontakt ist eine Diode notwendig, d.h. bei einem Keyboard mit Velocity (= 2 Kontakte) zwei Dioden pro Taste, und ohne Velocity eine Diode pro Taste.

Mit der Diode wird verhindert, dass DINs ueberbrueckt werden, wenn mehrere Tasten gleichzeitig gedrueckt werden (-> "Geisternoten")

Oh, ich glaube wir reden nicht über das selbe - oder ich steh grad bärisch auf'n Schlauch - Ich fasse nochmal zusammen:

Meine Orgel hat nicht zwei "Taster" sondern nur einen Wechselkontakt, der das Note on/off von zwei Sammelschienen abgegriffen hat.

Es gab mal den MidiChip E 510 (bei Döpfer) der konnte das verarbeiten. Im Ruhezustand liegt der Kontakt auf der Note OFF Schiene. Sobald eine Taste gedrückt wird, also das Signal wegfällt, wurde einfach die Zeit gemessen, bis der Kontakt die Note On Schiene berührt. Aus der Zeit wird der Velocity-Wert berechnet. Ich glaube, der konnte bis 10 Oktaven (via Dekoder) abfragen.

Sooo, ich habe mir jetzt gedacht, man könnte diese Sammelschienen aller 8 Noten (besser 16) aufteilen und auf die DIN's legen und den Abgriffkontakt via Diode auf ein DOUT - Also

DIN D1 = Note 1-8 "Note OFF-Signal"

DIN D2 = Note 1-8 "Note ON-Signal"

DIN D3 = Note 9-16 "Note OFF-Signal"

DIN D4 = Note 9-16 "Note ON-Signal"

Oder andersherum DIN<>DOUT ...

Ja, das war meine Vorstellung mit der Frage: Bekommt man das mit MIOS hin?

Und was ich mit den Diodenbrücke meinte war, dass die Tasten, die nicht verbaut sind auch nicht auf dem Note-Off liegen können. Wenn ich ein Computer wäre würde ich dann annehmen, dass sie gerade dabei sind, gedrückt zu werden - ich würde also die Zeit messen bis note on eintritt, was ja nicht passieren wird. Auweia, hat das jetzt jemand verstanden?

post-10644-0-41575200-1335291603_thumb.j

post-10644-0-96335000-1335291630_thumb.j

Link to comment
Share on other sites

Du hast Recht, dass man mit den Wechselkontakten jeweils eine Diode pro Taste einsparen kann, da ausgeschlossen ist, dass beide Kontakte gleichzeitig schliessen.

Doch es bleibt bei einer Diode pro Taste.

Siehe auch folgenden Schaltplan als Referenz:

http://www.ucapps.de/midibox_kb/midibox_kb_scanmatrix_vel_default.pdf

und denke Dir jede zweite Diode weg.

Die Break-Kontakte liegen bei Dir dann auf einem Oeffner, dessen Signallevel software-maessig invertiert werden muss (kein Problem, kann ich als Option einbauen)

-> passt!

Doch ich sehe keinen Weg, noch mehr Dioden einzusparen.

Angenommen, die Dioden wuerden sich direkt an DOUT D0..D7 befinden, und nicht an den einzelnen Tasten,

und angenommen die erste und neunte Taste wird gleichzeitig gedrueckt: dann entsteht bspw. zwischen DIN D1->DIN D3 ein (ungefaehrlicher) Kurzschluss (es fliesst kein nennenswerter Strom).

Wenn nun aber die zweite Taste noch zusaetzlich gedrueckt wird (also: Taste 1, 2 und 9 gleichzeitig), dann entsteht auch eine Verbindung zur 10. Taste -> und das willst Du nicht, dann dieser Akkord hoert sich schrecklich an ;-)

Zum E510 "Wunderchip": kann es sein, dass fuer jede 8er-Gruppe ein 74HC138 notwendig war?

Gruss, Thorsten.

Spitzen arbeit, danke dir vielmals!

Hast du schon Bestellt ?

Ja, Lieferung in ca. zwei Wochen! :)

Die veränderte Software läuft im übrigen auch ohne Probleme.

Super!

Mittlerweile habe ich uebrigens auch herausgefunden, warum die Rows verschoben waren... war ein Programmierfehler, jetzt passt alles so wie geplant.

Und btw.: die MBSEQ V4L stuerzt nun auch nicht mehr ab, wenn sie mit Pianist Pro (iPad) Kontakt aufnimmt; Ursache war eine Feedback-Loop die quasi zu einem Buffer Overflow fuehrte (Firmware-Update ist noch nicht released, da sich ja bisher noch niemand darueber beschwert hat ;-)

Gruss, Thorsten.

Link to comment
Share on other sites

Hallo Thorsten.

Toller Print, den du "so aus dem Handgelenk" generiert hast.

Features:

  • ...
  • die Pinbelegung von J3 und J4 ist 1:1 kompatibel zum Fatar Keyboard!
  • das Board ist auch fuer andere Anwendungsfaelle geeignet, man kann bspw. auch LEDs anschliessen, entweder in Matrix oder Direkt-Verschaltung (die Widerstaende muessen dann extern verloetet werden

Vielleicht solltest du noch bei der Fatar Kompatibilität darauf hinweisen, dass
  • dies nur für das 61 Keyboard gilt (s.
http://www.doepfer.d...Y/Matrix_61.gif).Das 76 KB hat einen 16-pol & einen 20-pol. Micro-Match mit verdrehten BK, und MK Sammelschienen (s. http://www.doepfer.d...Y/Matrix_76.gif)Das 88 KB hat wiederum zwei 20-pol. Micro-Match (s. http://www.doepfer.d...Y/Matrix_88.gif)

was bei allen 3 Keyboard Varianten vom Pinning auf dem Flachbankabel gleich ist, sind die T1 bis T8 zum Input Schieberegister HC165.

Gruss

Jo

Link to comment
Share on other sites

Hallo Jo,

was bei allen 3 Keyboard Varianten vom Pinning auf dem Flachbankabel gleich ist, sind die T1 bis T8 zum Input Schieberegister HC165.

Danke fuer den entscheidenden Hinweis - jetzt weiss ich, was bei Acul schiefgelaufen ist (was ich jetzt nicht als Vorwurf verstanden wissen moechte ;-):

in meinem urspruenglichen Schaltplan waren DIN und DOUT, sowie die Polaritaet der Dioden, vertauscht, weil ich ihn von meinem MicroKontrol Keyboard abgeleitet habe.

Doch fuer das Fatar-Keyboard war er ungeeignet. Wir haben dann die Polaritaet am DIN Modul (-> PullDown), sowie die Scan-Routine geaendert, doch das war eigentlich die falsche Massnahme.

So waere es bspw. nicht mehr moeglich gewesen, die Optimierungsmassnahme durchzufuehren, bei der eine MKx Reihe nicht gescannt wird, wenn die dazugehoerige BKx Reihe nicht aktiv ist.

Deshalb habe ich den Schaltplan nun nochmal ueberarbeitet.

Ausserdem habe ich noch weitere Schaltplaene erstellt, damit hier nichts durcheinander kommt.

Wie bspw. die Verdrahtung von den verschiedenen Fatar-Keyboards. Fuer die 76- und 88-Tasten-Version werden zwei DIO_MATRIX Module notwendig sein (oder ein DINX4 und ein DOUTX4).

Die nicht genutzten Ein- und Ausgaenge stehen fuer andere Zwecke zur Verfuegung, bspw. fuer zusaetzliche Tasten, aber auch LEDs

Die gesammelten Werke befinden sich hier: http://www.ucapps.de/midibox_kb.html

@ADK: "Keyboard Type #3" entspricht Deinem Anwendungsfall!

Vorsicht: die Dioden wurden gedreht!!! (Ich hoffe, dass Du noch nicht mit dem Loeten angefangen hast)

Gruss, Thorsten.

Link to comment
Share on other sites

Hallo Thorsten

Danke für die Beschaltungsvarianten der verschiedenen Keyboard Typen

Wie bspw. die Verdrahtung von den verschiedenen Fatar-Keyboards. Fuer die 76- und 88-Tasten-Version werden zwei DIO_MATRIX Module notwendig sein (oder ein DINX4 und ein DOUTX4).

Die nicht genutzten Ein- und Ausgaenge stehen fuer andere Zwecke zur Verfuegung, bspw. fuer zusaetzliche Tasten, aber auch LEDs

Ich sehe nur noch nicht ganz, warum bei den 76- & 88-Tasten Versionen 2 DIO Module gebraucht werden.

Die T1..T8 Outputs werden für die rechte und linke Seite jeweils auf 1 HC165 Input gelegt, bilden also einen 16-bit Input Wert.

Wenn man also nur eine Bk oder Mk Scanline aktiviert steht der entsprechende Tx Wert entweder im LSB oder MSB des 16 Bit Inputs.

Aktiviert man aber 2 Bks oder MKs (jeweils 1 in der linken und 1 in der rechten Hälfte), so kann man den kompletten 16-bit Input auswerten und bekommt pro Scan Schritt gleichzeitig die Werte für die linke und rechte Hälfte.

Vorteil: Nur 1 DIO notwendig. Scans für komplettes Keyboard werden fast um die Hälfte reduziert (je nach Keyboard Variante).

Nachteil: die Verdrahtung vom Keyboard zum DIO ist nicht mehr so schön 1:1 wie bei der 61-Tasten Version, aber laut deinen Zeichnungen hat es bei der 76er und 88er Version sowieso gekreuzte Leitungen. SW etwas aufwändiger.

Klingt noch etwas kompliziert, werde übers Wochenende mal eine Tabelle erstellen, welche das Ganze (hoffentlich) etwas mehr verdeutlicht, was ich meine.

Gruss

Jo

Link to comment
Share on other sites

Vorteil: Nur 1 DIO notwendig. Scans für komplettes Keyboard werden fast um die Hälfte reduziert (je nach Keyboard Variante).

Nachteil: die Verdrahtung vom Keyboard zum DIO ist nicht mehr so schön 1:1 wie bei der 61-Tasten Version, aber laut deinen Zeichnungen hat es bei der 76er und 88er Version sowieso gekreuzte Leitungen. SW etwas aufwändiger.

Mir ist klar was Du meinst, Du hast voellig Recht - ich werde die Verdrahtung entsprechend aendern! :)

Gruss, Thorsten.

Link to comment
Share on other sites

cool :sorcerer:

@ADK: "Keyboard Type #3" entspricht Deinem Anwendungsfall!

Vorsicht: die Dioden wurden gedreht!!! (Ich hoffe, dass Du noch nicht mit dem Loeten angefangen hast)

Tja, dann dreh'n wir sie alle mal um - sind ja nur 49. Wobei mir immer noch nicht ganz klar ist, was ich dann mit Taste 50-64 mache. Lass ich sie einfach offen oder muss ich sie definiert auf den idele-Kontakt legen.

Ich könnte sie auch auf die Orgelpedale legen - Da kann ich dann mit den Füßen weiter spielen :blink:

Mmmm, aber wenn den Midibox-Router mit implementiert, kann man die Pedale auf einen anderen Kanal schieben.

(kleiner Spaß am Rande ...)

Link to comment
Share on other sites

Das Umloeten der Dioden ist zumindest die einfachste Massnahme, um die Firmware ohne weitere Tricks (Pull-Downs etc.) ans Laufen zu bekommen.

Mittlerweile gibt es uebrigens die V1.004 - sie wurde von Acul erfolgreich mit einem Fatar Keyboard getestet.

Auf der MIDIbox KB Seite hat sich auch einiges getan: alle Konfigurationsparameter sind dokumentiert und sollten auch funktionieren.

Die Parameter fuer verschiedene Fatar-Keyboards sind exemplarisch aufgefuehrt, den Rest kann man sich (hoffentlich) hinzudenken.

Auch das "optimierte Scannen" wird nun unterstuetzt.

Ohne Optimierung wird ein 61er Fatar Tastatur in 130 uS gescannt.

Mit Optimierung in 65 uS (solange keine Taste gedrueckt ist)

Nunja, bei diesen Zeiten sollte man wirklich nicht mehr von Latenzen reden... ;-)

Vor allem, wenn man beruecksichtigt, dass das versenden eines MIDI Events ueber einen "normalen" MIDI OUT Port 1 mS dauert.

Ueber USB dann wesentlich (ca. 10..100 Mal) schneller.

Gruss, Thorsten.

Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...