Midi Platine bauen

OP #3483407
Lesenswert?

Hallo zusammnen,
ich habe vor meine Orgel zu midifizieren.

Jetzt ist mir aufgefallen, dass es doch eigentlich gar nicht so schwer 
ist solche Platinen selber zu bauen:

An diese Platine sollen 64 Tastenkontakte (sind kanz normale offene 
Kontakte)
angeschlossen werden.
An der anderen Seite soll dann mein Midisignal rauskommen.

Dann geht das Midikabel in einen Midi-USB Wandler und schlueßlich an den 
Computer.

Jetzt meine Fragen:
- brauche ich dafür einen Mikrocontroller ?
- wenn ja, was für einen ?
- gibt es irgendwo einen Schaltplan für sowas ? (Muss ja nicht Orgel 
sein. Wenn man Taster in ein Midisignal umwandelt müsste es ja genau das 
gleiche sein.
-bräuchte einfach irgendeinen Ansatz wie ich dieses Midisignal erzeugen 
kann. (Der Computer sollte es natürlich dann auch erkennen.)

Vielen Dank
Gruß
Fabi
#3483410
Lesenswert?

>- brauche ich dafür einen Mikrocontroller ?

Nehmen die meisten, macht's einfacher.

>-bräuchte einfach irgendeinen Ansatz wie ich dieses Midisignal erzeugen
>kann. (Der Computer sollte es natürlich dann auch erkennen.)

Hast du Erfahrung mit der Programmierung von Mikrocontrollern?
Die Signale zu erzeugen, ist nicht schwer, Midi ist ein sehr einfaches 
Protokoll.


Du brauchst einen kleinen Mikrocontroller (mit UART für Midi), ein paar 
Schieberegister um die 64 Tasten einzulesen, einen Optokoppler für Midi 
In / Out + Hühnerfutter.
Für einen erfahren Bastler kein Problem, als Anfänger schon sportlich 
würde ich mal sagen.


schau mal hier vorbei:

ucapps.de

das brauchst du:
http://ucapps.de/mbhp_din.html
http://ucapps.de/mbhp_core_lpc17.html

Gruß Jonas
Gast #3483421
Lesenswert?

Unter
http://cryptomys.de/horo/V-USB-MIDI/index.html
ist ein MIDI-Eingabeinterface beschrieben, das auf
http://www.obdev.at/products/vusb/index-de.html
besteht. Dort werkelt ein Mega-8 als USB-Midi Eingabegerät für 12 
Tasten, die direkt am Port hängen. Hatte das vor einiger Zeit mal 
angepasst für ein Kinderkeyboard, in dem die Tasten zu einer 8x8 Matrix 
(mit Dioden) verschaltet sind. Da es aber nur zweieinhalb Oktaven hatte, 
habe ich die einige sonstige Tasten zum Transponieren umfunktioniert. 
Wenn du alle 64 Tasten für Noten hast, kann das aus dem Programm raus. 
War alles handverdrahtet auf Lochraster, darum wenig Schaltungsdoku, bei 
Bedarf kann ich das noch ergänzen.
mfG vom ingo
Angehängte Dateien:
Gast #3483629
Lesenswert?

Fabian Müller schrieb:

> Habe jett hier mal angefangen einen Schaltplan zu zeichnen.
>
> Stimmt das so??
> Brauche ich da nicht mehr??

Wenn der Controller mehrere, nacheinander gedrückte Tasten, 
unterscheiden soll, muss vor jede Taste noch eine Diode.

Edit: mit nacheinander, meinte ich überlappend (Akkorde)
#3483758
Lesenswert?

Nun gute für dich:

Midi läuft mit einer Baudrate von 31250. Auf die musst du dein Uart beim 
Atmega einstellen. Herauszufinden wie das nun genau geht wäre einer der 
erten Aufgaben beim Entwickeln des Programs.
Du musst lernen google zu benutzen und die Informationen müssen wirklich 
zusammen getragen werden. Das MidiProtokoll ist wirklich einfach, alle 
Bytes (über Uart wird jeweils immer eins übertragen) deren Wert kleiner 
als 127 ist sind Steuerwerte alles über 128 sind Datenwerte. Das heißt 
dein Midi-Datenstrom ist so ausgelegt, dass auch mal ein Kabel 
ausversehen abgezogen werden kann (Bühnen-Betrieb etc.) und ohne 
Probleme wieder an seinen Platz gebracht werden kann und der 
"Datenstrom" direkt weiter verarbeitet werden kann.
Also besteht ein Datenpaket immer aus einem Steuerbyte und mehreren 
folgenden Datenbytes. Für eine erste Ausgabe würde sich ein NoteOn + 
Pause + NoteOff Befehl anbieten...Aber erstmal die Hardware...

Gruß Jonas
Gast #3483787
Lesenswert?

Fabian Müller schrieb:
> Ich bräuchte einen Code für C.

Der Code ist auf der Seite zu finden. Um-modifizieren...

oder um auf deine Frage anfangs zurückuikommen:

Entweder: der MC emuliert einen USB
oder : Hardware die an den MC sendet übernimmt diese Aufgabe.

Natürlich gibs auch Midi-Libs für andere Systeme.
Im Prinzip sind Midi-Signale einfach. Der MC sendet diese. Das GERÄT
gibt diese im Erfolgsfall wieder.

Noch ein Beispiel:

http://itp.nyu.edu/physcomp/Labs/MIDIOutput

ist auch wieder der "geliebte" Arduino . Die Eingabe kann man ja
auch über einen Taster machen.
Für 64 Taster benötigst du allerdings schon eine aufwendigere Logik.

Andere Systeme können das auch. Wenn ich sowas google finde ich 
etliches.
#3483804
Lesenswert?

Davon mal abgesehen, darfst du keine Anschlagdynamik erwarten, das ist 
wie Kinder-Piano spielen: On|Off. Bessere Klaviaturen haben min. 2 
Taster und man wertet dann die Zeit aus, bis beide gedrückt wurden - 
daraus lässt sich dann auch die Stärke des Anschlags errechnen.
Nur mal so...

Gruß Jonas
OP #3483837
Lesenswert?

Hallo zusammen,
vielen DAnk für eure Antworten.

Da ich eine Orgel midifiziere ist die Anschlagdynamik ziemlich egal.

Also ich suche einen Code den ich in die if Abfrage rein schreibe wenn 
der Taster1 gedrückt ist.

Würde gern ein kleines Demoprogramm schreiben.

So einen Code um ein Midisignal zu rzeugen finde ich einfach nicht.

Habe viel gegooglet.

Vielen Dank
Gruß
Fabi
Gast #3483869
Lesenswert?

Wenn wir genauer auf das Prob. eingehen wollen so fehlt folgendes:

Welcher MC ?
Welche Hardware wird bevorzugt ?
(Soll der PC einebunden werden ... soviel ich damit arbeite mache ich
das über Midi-Ports an USB, früher mal Drucherschnittstelle und ganz
früher gabs auch mal RS-232 - und alles von Cubase)

Anfänger Tut:

http://arduino.cc/en/Tutorial/Midi?from=Tutorial.MIDI

Ich vermute du willst alle Tasten abnehmen ?
Das erfordert entweder gute Kenntnisse im Programmieren, oder den
Einsatz von TTL-Hühnerfutter usw.usw,...

Jonas Biensack schrieb:
> Aber die "orgelzüge" auch mit midi... :D das wärs.

Ja da wirds heftig, Analoge Inputs - digitale Wandlung - analoger 
Output..

Viel Spass, das erfordert schon etwas.
#3483989
Lesenswert?

jogwheel schrieb:
> Ich vermute du willst alle Tasten abnehmen ?
> Das erfordert entweder gute Kenntnisse im Programmieren, oder den
> Einsatz von TTL-Hühnerfutter usw.usw,...
So kompliziert ist das Einlesen einer 8*8 Tastenmatrix doch nicht, vor 
allem wenn man es in C macht:
1
PORTA=0x00;  
2
DDRA=0x01;  //PORTA input außer A0
3
DDRB=0x00;  //PORTB Iinput
4
for(i=0;i<8;i++)
5
{
6
   tasten[i]=~PORTB;
7
   DDRA=DDRA<<1;
8
}
An PortB brauch es Pullups
Ich hoffe ich habe das mit den DDRx nich invertiert gemacht, ist mein 
erster Code für den AVR
Gast #3484625
Lesenswert?

früher (TM) gab es ein IC namens E510, das hat alles gemacht inkl. 
Anschlagdynamik. Aber das Ding habe ich schon lange nicht mehr bei einem 
Händler gesehen. Aktuell auf ebAy auch nicht. Vielleicht gibt es noch wo 
einen. (ich gebe meinen nicht her).
OP #3485442
Lesenswert?

jogwheel schrieb:
> Wenn wir genauer auf das Prob. eingehen wollen so fehlt folgendes:
>
> Welcher MC ?
> Welche Hardware wird bevorzugt ?
> (Soll der PC einebunden werden ... soviel ich damit arbeite mache ich
> das über Midi-Ports an USB, früher mal Drucherschnittstelle und ganz
> früher gabs auch mal RS-232 - und alles von Cubase)
>


Also vielen Dank für eure Antworten.

Eine Tastenmatrix macht keinen SInn weil die KOntakte sind ja schonin 
meiner ORgel eingebaut. Und die laufen alle auf eine MAsse.
Ist schwer zu erklären.
Also auf gut deutsch geht es nicht.

Bin jetzt zu dem Entschluss gekommen einen Atmega 2060 zu nehmen der hat 
über 64 I/Os.

Um das Midisignal in den PC zu bekommen würde ich soetwas kaufen:
http://www.amazon.de/LOGILINK-USB-MIDI-Adapter-Kabel/dp/B000XRI3CC/ref=sr_1_1?ie=UTF8&qid=1389627443&sr=8-1&keywords=USB+Midi


Vielen Dank
Gruß
Fabi
#3485562
Lesenswert?

>> Ich vermute du willst alle Tasten abnehmen ?

Im Prinzip schon, nur welcher Mc hat schon 64 Eingänge und kann noch zu 
Hause verarbeitet werden? Hättest du mal die von mir vorgeschlagenen 
Links (ucapps.de) angeschaut, da wird das eingängigste Prinzip 
vorgeschlagen.
Ein Mainboard + Erweiterungsboard für die 64 Eingänge.
Du kannst sowas nicht selber entwickeln, oder brauchst dafür lange 
lange...

Gruß Jonas
#3485572
Lesenswert?

Fabian Müller schrieb:

> Bin jetzt zu dem Entschluss gekommen einen Atmega 2060 zu nehmen der hat
> über 64 I/Os.

Das ist nicht besonders sinnvoll. Alleine das Strippenziehen bringt dich 
um. Stell dir einfach mal vor, dass 64 Kabel an einen Punkt 
zusammenlaufen. Kannst du dir den Kabelsalat vorstellen?

Sinnvoll ist zb der Einsatz von Schieberegister. ZB jeweils 8 Tasten 
werden an einen Schiebereister-Baustein angeschlossen und alle 
Schieberegister werden untereinander mit einem kleinen mindestens 
4-poligem Bussystem verbunden. Am µC landet man dann mit einem simplen 
4-poligen Kabel, über welches alle Tasten abgefragt werden können. Das 
vereinfacht zum einen die Verdrahtung, verringert die 'Kupfer'-Kosten 
und der Übersichtlichkeit kommt es auch zu gute. Das bischen komplexere 
Programmierung ist dagegen wieder leicht zu verschmerzen.
OP #3485621
Lesenswert?

Hallo,
vielen Dank!

Habe mir ueberlegt einfach mehrere Atmen 8 zu verwenden.
Habe noch 53 daheim.
Das müsste doch gehen oder?

Dann schließe ich halt 15 pro Atmega8 an.
Dann brauche ich halt 5.

Jetzt brauch ich nur noch den Code um ein Midisigbal zu erzeugen.


Vielen Dank
Gruß
Fabi
#3488430
Lesenswert?

Fabian Müller schrieb:
> Hallo,
> vielen Dank!
>
> Habe mir ueberlegt einfach mehrere Atmen 8 zu verwenden.
> Habe noch 53 daheim.
> Das müsste doch gehen oder?
>
> Dann schließe ich halt 15 pro Atmega8 an.
> Dann brauche ich halt 5.

Klar kann man 4 Mega8 auch als Schieberegister programmieren und 1 
Master, der die Schieberegister abfrägt und daraus die MIDI-Frames baut.
Fragt sich halt nur, wie sinnvoll das ist. Speziell wenn man dann auf 
Geschwindigkeit kommen will.

Eines der großen Problem bei Mehrprozessor-Lösungen besteht fast immer 
darin, dass die Prozessoren ja auch miteinander kommunizieren müssen. 
Der dazu notwendige Aufwand ist dann oftmals nicht ganz unerheblich.
Wer mehrere Prozessoren einsetzt, wo einer alleine die Arbeit ebenfalls 
verrichten könnte, ist entweder verdammt gut, oder er weiß nicht was er 
tut. Der Rest von uns (inklusive mir), setzt einfach einen einzelnen 
Prozessor ein und baut gegebenenfalls die Hardware drumherum mit 
'klassischen' IC auf (also nicht µC-gesteuert)
Gast #3488456
Lesenswert?

Karl Heinz schrieb:
> Eines der großen Problem bei Mehrprozessor-Lösungen besteht fast immer
> darin, dass die Prozessoren ja auch miteinander kommunizieren müssen.
> Der dazu notwendige Aufwand ist dann oftmals nicht ganz unerheblich.

Stimmt. Das gibt eventuell Kuddelmuddel.
Die Jungs aus meinem obigen Link haben das mit 74165ern gebaut.

Selber arbeite ich mit CV to Midi, eben Synth-Tech wobei die Tonhöhe
über Spannung besteuert wird. Ob das mit einer Orgel geht wäre (mit
Hilfe des Schaltplans) auszutesten.

Bin mal gespannt.

Jo
Gast #3488480
Lesenswert?

Hallo Fabian,

vielleicht solltest Du uns wissen lassen um welches Orgel-Modell es sich 
handelt. Die meisten auf dem Markt haben ab den 80er Jahren schon eine 
Tastaturmatrix verbaut. Der dabei entstehende Code kann zur Umwandlung 
in ein Midi-Signal dienen. Dies hätte den Vorteil das Du dir um das 
Tastenprellen usw. keine Gedanken machen müsstest. Also Orgel umgedreht 
und Typenschild fotographiert, verkleinert <200k und hochgeladen.

Gruss

Roman
Gast #3492063
Lesenswert?

1
void loop() {
2
  // play notes from F#-0 (0x1E) to F#-5 (0x5A):
3
  for (int note = 0x1E; note < 0x5A; note ++) {
4
    //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
5
    noteOn(0x90, note, 0x45);
6
    delay(100);
7
    //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
8
    noteOn(0x90, note, 0x00);   
9
    delay(100);
10
  }
11
}
Warum schreiben immer alle
1
    noteOn(0x90, note, 0x45);
2
    noteOn(0x90, note, 0x00);
und nicht
1
    noteOn(0x90, note, 0x45);
2
    noteOff(0x80, note, 0x00);

beim
1
    noteOn(0x90, note, 0x00);
machst doch nur die Lautstärke auf 0 die note selbst bleibt aber 
aktiv...
kommts da nicht irgendwann zur "aufblähung"?..
#3492090
Lesenswert?

malnachgefragt schrieb:

> machst doch nur die Lautstärke auf 0 die note selbst bleibt aber
> aktiv...

Ich kann zwar nur raten, aber ich würde doch schätzen, dass die meisten 
Synthesizer eine Note mit einer Lautstärke von 0 und eine abgeschaltete 
Note als gleichwertig ansehen.

Vielleicht ist es aber auch so, dass die Arduino MIDI Library das intern 
handelt und bei einem noteOn mit einer Lautstärke von 0 ein 
MIDI-Note-Off wegschickt.
Was sagt denn die Arduino Doku zu diesem Thema?
Gast #3500216
Lesenswert?

Hi Fabian!

Ich greife mal Dein Eingangsposting auf:

Fabian Müller schrieb:
> An diese Platine sollen 64 Tastenkontakte (sind kanz normale offene
> Kontakte)
> angeschlossen werden.
> An der anderen Seite soll dann mein Midisignal rauskommen.
und
> - gibt es irgendwo einen Schaltplan für sowas ? (Muss ja nicht Orgel
> sein. Wenn man Taster in ein Midisignal umwandelt müsste es ja genau das
> gleiche sein.
> -bräuchte einfach irgendeinen Ansatz wie ich dieses Midisignal erzeugen
> kann. (Der Computer sollte es natürlich dann auch erkennen.)

Die Erfüllung dieses Wunsches ist der Doepfer-IC E510 aus den 80ern.
Hier gibt es noch welche und ein Datenblatt ist ebenfalls dort zu 
finden:
http://www.cedos.com/index.htm
Für Dein Vorhaben ist besonders die Applikation auf Seite 9 des 
Datenblattes interessant. Ich habe Ende 2009 übrigens 15 Euro brutto 
zzgl Versand für so ein IC bezahlt.
Die Telephonnummer gehört lustigerweise zu einem EDEKA-Laden am 
Stadtrand von Wetzlar, die Initialen des Namens der Inhaberin dieses 
Ladens passen auch wunderbar zum Firmennamen CEDOS.
Vielleicht packt sie Dir ja eine Scheibe Gelbwurst dazu :-)

Falls dort doch nichts (mehr) geht oder inzwischen Mondpreise aufgerufen 
werden oder Du einfach keine Gelbwurst magst, dann geht es hier weiter 
mit einem sehr interessanten E510-Klon in einem PIC:
http://www.reocities.com/JDPetkov/Hardware/mkcv96/mkcv96.htm

Ganz, ganz unten auf dieser Seite wiederum findest Du einen Link zur 
bulgarischen Seite
http://www.midiboutique.com
die diese Platine (bzw. Nachfolgemodelle) fertig vertreibt. Das ist 
vielleicht nicht ganz billig, aber dafür halt fix und fertig und man tut 
was für Osteuropa :-)

Für Deine Orgel wäre wahrscheinlich ein Modell wie dieses hier 
interessant (64 Tasten und keine Tastaturmatrix nötig):
http://www.midiboutique.com/products/productform.php?prod_id=12910
hier noch mal das Anschlusskonzept:
http://www.midiboutique.com/products/whatis/whatis.htm#sr

Die "Project Gallery" ist übrigens auch sehr interessant anzusehen. Da 
sind Bilder sehr vieler bereits durchgeführter Orgelumbauten zu sehen.

Viel Spaß!
#3502110
Lesenswert?

Hi,
also ehe du dir hier eine riesen Arbeit machst, würde ich dir doch auch 
ganz stark raten, auf bereits fertiges zurück zu greifen. Ich selber 
habe für meine Lichtsteuerung die Hardware von ucapps.de aufgebaut und 
bin wirklich zufrieden! Leichter und einfacher geht's kaum. Einfach die 
Hardware nachbauen, den PIC mit der grundlegenden Firmware flashen, 
alles weitere geht über die MIDI-Schnittstelle (also auch Apps auf den 
PIC laden usw.).
Moderator (Firma: Titel) Persönliche Seite #3502168
Lesenswert?

Ich habe seinerzeit einfach eine Schieberegisterkaskade verwendet. Da 
passen immer 8 Kontakte in ein Schieberegister, mit 4 Schieberegistern 
waren alle 32 Kontakte abgefragt und das Konzept ist beliebig 
skalierbar. Der größte Vorteil ist aber: jede Taste ist unabhängig von 
anderen abfragbar, und es ist immer nur eine lokale Verdrahtung von 8 
Kontakten zu 1 Schieberegister nötig. Das Ganze war so simpel, dass ich 
es einfach auf Lochrasterplatinchen verdrahtet habe.

Ich glaube, ich muss mal meine Unterlagen zusammenkramen und ins Netz 
stellen... ;-)
Gast #3517366
Lesenswert?

Hi Fabian,

hast Du mal wegen des E510 bei Frau C. angefragt und Dir schon mal das 
Datenblatt angesehen? Wenn Du das Datenblatt gelesen hast, dann hast Du 
sicher gemerkt, daß Du mit diesem Ding überhaupt NICHTS programmieren 
musst- keine einzige Codezeile! - weil das Teil das alles selber macht. 
Vorne Tasten dran, etwas IC-Gemüse und eine Prise Strom dazu, hinten 
MIDI raus, fertig.

Der Link von OAmp verweist übrigens auf den selben Jordan Petkov, den 
ich Dir auch schon genannt hatte.
Gast #3584439
Lesenswert?

Ich wäre auch an so einem Chip interessiert, dem Thread entnehme ich 
aber, dass es das Teil nicht zu geben scheint.

Welche anderen Chips liessen sich einsetzen, bzw könnte man empfehlen, 
um sich Arbeit zu sparen?
Gast #3607339
Lesenswert?

Kennt jemand eine Art von Universalplatine mit MIDI-Eingängen, die 
programmierbar ist?
aus dem DMX-Bereich kenne ich mehrkanalige Systeme, die mehrere 
MIDI-Buchsen verbaut haben.
Am Besten wäre etwas auf ARM-Basis.
Gast #3607444
Lesenswert?

@ Hobbymusiker (Gast):

Sag mal, was genau Du Dir vorstellst... so eine Art MIDI-Verteiler? 
Falls ja, würde ich mich mal nach Unitor8 oder auch AMT8 von emagic 
umsehen - gibt's oft in der Bucht angeboten. Mit dem dazugehörigen 
Programm (aus'm Netz) kann man verschiedenste Routings vornehmen - 
welcher Eingang geht auf welchen Ausgang (oder mehrere Ausgänge).
#3607476
Lesenswert?

>noteOn(0x90, note, 0x45);
>noteOn(0x90, note, 0x00);
>...

Weil alle Syntesizer das gleichwertig interpretieren.

>Ich kann zwar nur raten, aber ich würde doch schätzen, dass die meisten
>Synthesizer eine Note mit einer Lautstärke von 0 und eine abgeschaltete
>Note als gleichwertig ansehen.

So ist es Karl-Heinz.

Gruß Jonas
Persönliche Seite #3609216
Lesenswert?

Jonas Biensack schrieb:
> Weil alle Syntesizer das gleichwertig interpretieren.
>>Ich kann zwar nur raten, aber ich würde doch schätzen, dass die meisten
>>Synthesizer eine Note mit einer Lautstärke von 0 und eine abgeschaltete
>>Note als gleichwertig ansehen.

Das würde ich auch sagen, allerdings laufen einige auch so, dass der 
Oszillator weiterläuft und nur die ADSR-Hülle eine Null ausgibt. Der 
Unterschied wird dann evident, wenn man wieder einschaltet, weil dann 
die Phase nicht automatisch Null ist. Das ist z.B. bei einigen 
VA-Synthesizern so.
Gast #3610897
Lesenswert?

Ohne Velocity, zu Deutsch: Anschlagdynamik ist das ganze MIDI-Keyboard 
nichts Wert.

Selbst mein fuer 5 Euro aus einer Firmenaufloesung abgestaubtes
Maestro MIDI Smart ist anschlagdymanisch. Leider nur auf 49 
Mini-Tasten...

Wenn man die Dynamik nicht braucht, kann man sie ja wegfiltern.
Nur dazudichten kann man sie nicht.
Gast #3611006
Lesenswert?

Jonas,

schau mal, ob die von Dir bereits eingebauten Taster vernünftig an einem 
Halbleitereingang langlebig funktionieren. Da fliesst nur ein geringer 
Strom und die Kontakte reinigen sich nicht mehr selbst und korrodieren 
dann...

wenn du ohne anschlagsdynamik nur 64 tasten brauchst + noch paar tasten 
extra kannst du auch ein stm32f407 discovery board (ca. 15€) nehmen. der 
uC hat genug I/O's, kostenfreie Entwicklungsumgebung für C findest du 
bei coocox.org.
Beispielprojekte den UART zum spielen zu bringen und nen taster 
auszulesen gibt es dafür auch zuhauf.


gruss, tom.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren