Hallo Liebe Leute! Ich habe mir vor kurzem vorgenommen jetzt mal ein etwas größeres und aufwendigeres Projekt zu starten. Kurz zu mir. Ich heiße Oliver, bin ein 20 Jahre junger gelernter Elektroniker aus Österreich und möchte mich selber etwas bilden und gleichzeitig produktiv dabei sein. Wie in der Überschrift steht würde ich mir gerne ein "kleines" Midi-Keyboard basteln. Mit meinem Derzeitigen Wissensstand werde ich leider nicht allzuweit kommen aber mit etwas Hilfe und einen Stups in die richtige Richtung, bin ich davon überzeugt, dass ich das Schaffen werde. Wie ich mir das Vorstelle: Ich dachte mir so im groben und ganzen, dass ich alles was ich hier aufschnappe und eben fabriziere, mit Dokumentiere und euch immer am neusten Stand halten werde. Da ich in manchen Situation definitv etwas professionelle Hilfe benötige, werde ich auch Regelmäßig meine Probleme erörtern. Und es wird bestimmt auch zu manchen meiner Ideen, Verbesserungsvorschläge geben die ich mir auch gerne zu Herzen nehme. ------------------------------------------------------------------------ ZU DEM PROJEKT: ------------------------------------------------------------------------ Ich möchte dieses Keyboard Schritt für Schritt angehen und habe schon einige Vorstellungen und "Wüsche". Mit Wünsche meine ich Funktionen die ich in Zukunft einmal dazu entwickeln möchte nachdem das Grundkonstrukt einmal steht. So mein Keyboard also soll Anfangs einmal mindestens 2 Oktaven - besser wären 3 - besitzen. (Also 24 oder 36 Tasten). Das ganze wird natürlich so Zeitgenau wie möglich in einen µc eingelesen, bearbeitet und letztendlich über einen kleinen Tongenerator (nix aufwendiges, sinus, sägezahn, square, oder triangle) wiedergegeben. Zudem möchte ich noch vorab zu jeder Taste eine LED zuweisen (welche unter den transparenten Tastern sitzen sollen). Sozusagen als kleiner Effekt und später um gespeichertes auf den Tasten zum nachspielen anzuzeigen. Ja das Waren mal so die Grundlegenden sachen. In Zukunft würde ich dann eben gerne noch erweitern: -Speicher -Tastenanschlagsstärke (sollte ich diese von Vornerein einbauen??) -Midi -USB -Synthesizer -Fader und Potis -Display uvm... Sozusagen "a never ending story" Was ich bis jetzt habe??? Naja wenn ichs genau nehme noch gar nichts. Unzählige Gedanken habe ich mir drüber gemacht und mich im Internet nach manchen Lößungen umgesehen. Das Erste Problem auf dass ich gestoßen bin war einmal, wie lese ich die Tasten so intelligent wie möglich ein?? Anfangs dachte ich an Multiplexing aber im Nachhinein gesehen war das dann glaube ich doch nicht die ideale Lösung (bäuchte sehr viele Ein/Ausgänge). Später bin ich dann auf die Idee des shift Registers gestoßen. Zeitgleich (parallel) alle 24/36 Tasten einlesen und seriell in den µC schieben, kam mir dann als gar nicht so unelegant vor. Umgekehrt ebenso. Seriell die 24/36 Werte rausschieben und Zeitgleich über das Register an die LEDs ausgeben. Das ganze mit einer Taktung von etwa 2-10 kHz sollte doch halbwegs gut klappen. Da ich mich einmal schritt für Schritt ranarbeiten möchte ist das auch derzeit mein einziges Problem bzw. eher eine Frage ob diese Idee absolut schwachsinnig oder doch nicht so blöd ist. Eine Zweite Frage stünde hier auch noch im Raum. Vorerst hätte ich mir vorgenommen auf einem halbwegs schwachen µC zu Programmieren. Da ich eine kleine Vorliebe für Atmel Produkte habe wäre mir so ein kleiner ATMega 32 in den sinn gekommen. Einfach nur für erste Versuchsaufbauten und um mit der Programmierung beginnen zu können. Sollte dies Jemand für, zu kurz gedacht Empfinden, so möge er nun sprechen oder für immer schweigen ;). Also Fazit. Reicht dieser für den Anfang um später auf größere, stärkere umzusteigen? Sollte doch kein Problem sein oder soll ich mir gleich etwas Leistungstärkeres zulegen um später nicht in schwierigkeiten zu geraten... So nach dieser Einleitung (die einem Roman gleicht) hoffe ich auf positve Rückmeldungen und etwas unterstützung. MfG Euer Olli
:
Bearbeitet durch User
Habe grade ein Midi-Keyboard gebaut ;) Zutaten: 1 Keyboard mit Diodenmatrix, 61 Tasten mit Umschaltkontakten für Anschlagsdynamik 1 mega88 2 74LS138 1 Display Gehäuse, ein paar Taster und Kleinkram
P. M. schrieb: > 1 Keyboard mit Diodenmatrix, 61 Tasten mit > Umschaltkontakten für Anschlagsdynamik > 1 mega88 > 2 74LS138 Hmmm... der mega88 wäre für den den anfang bestimmt nicht so schlecht. Aber ich bin mir mit dem Multiplexing nicht ganz so sicher da ich ja die velocity (Anschlagsstärke) gerne noch mit 8 bit erfassen möchte. Klar das geht über das Schiebregister auch nicht aber sollte ich derzeit zu keiner lößung kommen kann ich durch das Schieberegister doch Ein/Ausgänge sparen da ich sie ja leicht kasskadieren kann.
Am einfachsten ist es ( wie so oft ) Arduinos zu verwenden, da es dort schon sehr viele fertige Midi-Bibliotheken gibt: https://www.youtube.com/watch?v=JONIZdLZAVM https://www.arduino.cc/en/Tutorial/MidiDevice
Oliver H. schrieb: > Schieberegister Damit kann man natürlich mehr Ein-/Ausgänge sparen. Für eine 16 x 8 Matrix brauche ich mit den beiden Multiplexern 5 Ausgänge und 8 Eingänge, die z.T. auch noch für anderes genutzt werden können. Velocity mit 8 bit (4 hätten auch gereicht). Für ein reines Midi-Master-Keyboard reicht der m88. Hätte ich mehr gewollt, hätte ich den Xmega E5 oder A4U genommen. Für LEDs unter den Tasten ist der Aufwand größer, da brauchst Du dann auch noch einen Sequenzer, der aufnehmen und wiedergeben kann. ChrisMicro schrieb: > Arduinos Sehr schön, dem fehlt nur leider das, worum es hier geht: Das Keyboard (siehe Bild)
ChrisMicro schrieb: > Arduinos Ja Arduinos sind recht nett und es gibt viele Bibliotheken aber das ist genau das was ich nicht machen möchte. Auf 10-20 Bibliotheken zurückgreifen die sowieso schon von Arduino noch vereinfacht wurden indem man speziellen codes zusammengefasst hat und einen eigenen Namen gegeben hat. Ich möcht so viel wie möglich selbst Programmieren. Größtenteils in C und Assembler möchte ich auch nicht auslassen (auch wenn ich ohne Assembler wahrscheinlich eh nicht auskommen werde). P. M. schrieb: > Für LEDs unter den Tasten ist der Aufwand größer, da brauchst Du dann > auch noch einen Sequenzer, der aufnehmen und wiedergeben kann. Ja ein Sequenzer der mir alles aufnimmt ist von mir schon eingeplant worden weshalb ich auch einen Speicher in zukunft einbauen möchte. Vorerst soll er nur Zeitgleich das auf die LEDs wiedergeben was gerade gedrückt ist und das funktioniert mit den Schieberegistern glaube ich am einfachsten. Brauche ja nur ein HIGH und LOW. (siehe Bild) Aber mal Schritt für Schritt zum eigentlichen. Die eingabe bereitet mir noch Kopfschmerzen. Velocity muss auf jeden fall dabei sein. P. M. schrieb: > Velocity mit 8 bit (4 hätten auch gereicht). Gut wenn 4Bit reichen dann werd ich auch nur 4 Bit machen, aber das ganze muss ja Analog eingelesen werden. Demanch brauche ich Tasten mit Drucksensoren(Piezo?) und dann bestimmt auch noch für 36 Tasten ADCs. Das muss doch irgendwie eleganter gehen. Ideen?
Oliver H. schrieb: > Ja Arduinos sind recht nett und es gibt viele Bibliotheken aber das ist > genau das was ich nicht machen möchte. Auf 10-20 Bibliotheken > zurückgreifen die sowieso schon von Arduino noch vereinfacht wurden > indem man speziellen codes zusammengefasst hat und einen eigenen Namen > gegeben hat. Ich möcht so viel wie möglich selbst Programmieren. > Größtenteils in C und Assembler möchte ich auch nicht auslassen (auch > wenn ich ohne Assembler wahrscheinlich eh nicht auskommen werde). Auch C ist ohne Bibliotheken kaum zu gebrauchen.
Wolfgang E. schrieb: > Auch C ist ohne Bibliotheken kaum zu gebrauchen. Ja natürlich werde ich Bibliotheken brauchen. Allerdings glaube ich beim Ardunio etwas mehr zu benötigen und dazu noch etwas eingeschränkter zu sein. Außerdem habe ich bis jetzt zu 95% nur auf AVR programmiert und da möchte ich auch vorerst bleiben.
Oliver H. schrieb: > Demanch brauche ich Tasten mit Drucksensoren(Piezo?) und dann bestimmt > auch noch für 36 Tasten ADCs. Das muss doch irgendwie eleganter gehen. Der Wert heißt "Velocity", weil üblicherweise die Geschwindigkeit des Tastendrucks gemessen wird (Zeitdifferenz zwischen zwei Schaltern/Lichtschranken/etc.).
Clemens L. schrieb: > Der Wert heißt "Velocity", weil üblicherweise die Geschwindigkeit des > Tastendrucks gemessen wird (Zeitdifferenz zwischen zwei > Schaltern/Lichtschranken/etc.). Dankeschön das hilft mir seeeehr gut weiter. Und wieder was gelernt. Gut damit wären mal so meine großten Probleme aus dem weg geräumt. Werde euch am laufenden halten und einmal einen Schaltplan entwerfen.
Drucksensor(en) und ADC(s) brauchst du für (polyphones) Aftertouch. Das würd eich für ein erstes Keyboard-projekt aber auslassen ;-)
Aber wo kriegt man das Keyboard her? Vor 3 Jahren hatte www.musicstore.de Fatar-Keyboards im Angebot, ca 100EUR, reines keyboard ohne Elektronik/Midi-Encoder und Gehäuse.
C# Beginner schrieb: > Aber wo kriegt man das Keyboard her? Oder zumindest die Tasten mit Anschlagdynamik. Habe mich bissi umgesehen nur die Tasten hätte ich bis jetzt noch nicht gefunden.
Bei Dieter natürlich: http://www.doepfer.de/preise.htm dort unter Ersatzteile und eventuell auch auf Anfrage. Die Tatstauren sind von Fatar (fatar.com).
Oliver H. schrieb: > Oder zumindest die Tasten mit Anschlagdynamik. Tasten "haben" keine Anschlagsdynamik. Das ist ein einfacher Umschalter. Wenn die Taste oben ist, ist der eine Kontakt geschlossen, wenn sie unten ist, der andere. Die Zeit vom Öffnen des Oberen bis zum Schließen des Unteren wird vom Controller gemessen und als Velocity übertragen. Das Drücken dauert ca. 5 bis 20 ms und wird auf den Bereich von 127 bis 1 abgebildet. Unter 5 ms entspricht Velocity 127, über 20 ms dementsprechend Velocity 1.
Dabkeschön. Ja dadurch dass ich keine Gefunden habe hätte ich versucht es genau so selbst zu lösen. In meiner HTL kann ich mir die Tasten zum glück auch selber machen wodurch den Rest eben über die High Zustände glöst hätte. Also in jeder Tastenendstellung ein kontakt der zum parallel eingang des Schieberegisters führt und eben am taster selbst der Schaltkontakt an vcc gelegt.
Ich will Dich ja nicht von deinen Schieberegistern abbringen ;) Für 'ne 16 x 8 Matrix kann man 3 LS595 nehmen (LS165 würden auch reichen) und man muß schieben. Mit 2 LS138 kann ich 16 Byte direkt nacheinander einlesen, ohne irgendwas schieben zu müssen. Und ich brauche 1 IC weniger.
Wie liest Du mit zwei '138 16 Byte "direkt nacheinander" ein? Magst Du das mal skizzieren?
Na ja, der Port an dem die 138er hängen muß natürlich nach jedem Byte noch inkrementiert werden ;) Das finde ich aber wesentlich einfacher, als das schieben.
:
Bearbeitet durch User
Man könnte ein elektrisches Klavier (z.B. von Yamaha) kaufen und ausschlachten, die enthalten super Tastaturen :-)
Oliver H. schrieb: > (Also 24 oder 36 Tasten). > Das Erste Problem auf dass ich gestoßen bin war einmal, wie lese ich die > Tasten so intelligent wie möglich ein?? Anfangs dachte ich an > Multiplexing aber im Nachhinein gesehen war das dann glaube ich doch > nicht die ideale Lösung (bäuchte sehr viele Ein/Ausgänge). 2*Ceiling(Sqrt(24))=10 2*Ceiling(Sqrt(36))=12 D.h.: im allerschlimmsten Fall brauchst du 12 IOs zur Tastenabfrage. Das ist nicht wirklich viel, da kämen sogar noch eine Menge ATtinies in Frage und bei jedem ATmega bleiben dabei reichlich Pins über. Beim allerkleinsten (Mega8) immerhin noch 14. > Später bin > ich dann auf die Idee des shift Registers gestoßen. Zeitgleich > (parallel) alle 24/36 Tasten einlesen und seriell in den µC schieben, > kam mir dann als gar nicht so unelegant vor. Das ist auch nicht unelegant. Lohnt aber halt nur dann, wenn man wirklich knapp mit Pins ist. Bist du aber noch lange, lange nicht. Und falls doch irgendwann: Nimmst du halt zwei AVR, von denen einer nur als Key-Controller werkelt. Dann bist du bei einem 16-Pinner (2x Supply, 14x IO für die Keyboardabfrage und 2 Pins für die Komunikation mit dem Rest deines Werkes). Also z.B. ATtiny24. 80 Cent oder so... > Umgekehrt ebenso Genau. Auch LEDs steuert man am effizientesten als Matrix an. Lustigerweise ist es in der Kombination von Tastern und LEDs sogar leicht möglich, eine "Seite" der Matrix für beides zu benutzen. Sprich: gegenüber den oben gezeigten Grundformel, angewendet auf beide Einzelmatrizen, halbiert sich der Bedarf an IOs. Sind wir also bei 18 IOs. Ein Mega16 z.b. hat 32, bleiben also 14... Mal sehen, was dir einfällt, um die sinnvoll zu benutzen...
Stefan U. schrieb: > Man könnte ein elektrisches Klavier (z.B. von Yamaha) kaufen und > ausschlachten, die enthalten super Tastaturen :-) So in dieser Vorgehensweise habe ich auch beim Mitlesen gedacht :-) Dann noch ´nen gebrauchten (ollen) Expander dazu. Bietet alles zum Experimentieren im Zusammenhang mit Midi Out/In (Midi-In war ja geplant für´s Speichern der Daten, wenn ich mich nicht irre??). Dachte auch an IBäh: -> Yamaha, Technics und CO. Darauf achten, dass das gesuchte Pressure und evtl. Aftertouch erkennt. MfG Udo (NB: Bin grad auch mit Midi-In-Out beschäftigt, aber nur als Hobby)
c-hater schrieb: > D.h.: im allerschlimmsten Fall brauchst du 12 IOs zur Tastenabfrage. Das > ist nicht wirklich viel, da kämen sogar noch eine Menge ATtinies in > Frage und bei jedem ATmega bleiben dabei reichlich Pins über. Beim > allerkleinsten (Mega8) immerhin noch 14. Ja stimmt schon das ist nicht allzuviel, habe ich im nachhinein beschlossen doch eher auf 61 Tasten umzusteigen wobei ich dann eben 16 Pins benötigen würde. mit LEDs wären es dann midestens (wenn ich eine Seite für die LED´s benützen würde 24 zudem kommt auch noch dass ich für die Velocity einmal den Punkt messen muss wo die Taste einen Kontakt verlässt (dafür einmal 61 Eingänge) und einmal noch den Punkt wo die Taste ganz durchgedrückt wird (nocheinmal 61 Eingänge) wären also alles in allem 122 eingänge die ich bräuchte also insgesamt 11*11 (22) plus 11 für die LEDs. Also 33 Das ist dann doch nicht ganz so wenig. Wo hingegen ich bei den Schieberegistern einfach nur nocheinmal 8 hinzukasskadieren muss also dann eben 24 so kleiner iCs benötige wobei mich einer nur 32cent kosten würde, also auch nicht die Welt. Was noch dazu kommt ist dass ich beim Multiplexen für jeden Eingang und Eusgang 2 Drähte benötigen würde, jedoch bei den Schieberegistern insgesamt nur 4 Pro Taste, (Vcc, Taste nicht gedrückt, Taste Gedrückt und LED) ohne das ich die Matrix kompliziert entfelchten müsste beim Layouten. Ca so wie auf dem kurzen Schema (siehe Bild) Da später auch noch Diverse Buxen für USB, Midi vl Klinke und ein Display dazu kommen soll glaube ich dass ich mit dieser Lösung am weitesten voran komme. Vorallem weil ich auch noch die SPI zur schnelleren einlese verwenden kann da ich noch nicht weiß wie zeitaufwendig das Alles sein wird. Ich hoffe ihr stimmt mir zu. Begründete Gegenargumente nehme ich gerne entgegen :)
:
Bearbeitet durch User
Bei Döpfer gibt es: graduierte Hammertastatur 88TP/40GH, 88 Tasten, mit dynamischen Gummikontakten, mit After-Touch (ohne Midi-Elektronik, Gehäuse, und Kabel) für 650. aber sie haben keinen Schaltplan/Matrix parat http://www.doepfer.de/DIY/MKE_keyboards.htm Weiß jemand, wie ein Midi-Encoder für 88-Tasten funktioniert?
Gib mal bei Ebay 'Keyboard defekt' ein. Riesiges Angebot für wenige Euros.
http://www.hoffrichter-kirchenorgel.de/de/Index.htm Hier habe ich vor ein paar Jahren eine Fatar Klaviatur halbgewichtet glaub 61 Tasten. Die habe ich mir dann auf die passende Länge zugeschnitten und verbaut. Hat glaube ich 85€ gekostet
Auch Ich möchte ein MiDi Masterkeyboard bauen. Dazu hab Ich mir bei E-Bay ein Miditech Midistart 2 als defekt für kleines Geld geschossen. Ich hätte vor ein System mit 3 Controllern zu bauen. 1. ATXMEGA 32 allein für Tastaturabfrage. Die Daten werden dann uber den USART ausgegeben. 2. Ein Display Controller - Dafür hab Ich vorerst mal einen ATMEGA88 eingeplant - Sollte der nicht reichen passt ein Pinkompatibler ATMEGA 328 rein. 3 ATXMEGA 32 der die ganze Verwaltung macht, die Potis abfragt und die Einstellwerte im EEPROM abspeichert. Ich möchte einen MiDi in Port implementieren um eventuell auch mal ein MiDi Basspedal anschließen zu können. Des weiteren sollen 2 Schalteingänge und ein Analogeingang auf Buchsen gelegt werden ( z.B. Sustain, Solo, Lautstärke ). Die Idee ist die Schalter und Taster frei zuordnen zu können. De weiteren wäre eine Transponierung um Halbtöne für das ganze Keyboard, sowie eine Transponierung um Oktaven für die einzelnen Splitbereiche geplant. Ich hab schon mal bei der Taststurabfrage ein wenig mit dem Simulator vom AVR Studio 7 rumgespielt und gemerkt, das auch ein mit 20MHz laufender ATMEGA xx gerade so an der Leistungsgrenze ist - Daher meine Wahl für den XMEGA ( noch nicht getestet ). Da der Hauptcontroller ja eigentlich nur vorgefertigte Daten verarbeiten und verteilen muss, dürfte hier weniger Rechenleistung gebraucht werden. Da Ich 3 USART Schnittstellen brauche fiel hier die Wahl auch auf einen XMEGA. Die 3 Controller miteinander kosten unter 10,-€. Blöd ist, das es von den XMEGA keine DIL Varianten gibt. Ich hab mir für den Versuchsaufbau mit einem TFQP 44 Adapter beholfen.
Es gab mal ein IC namens E510. Ich habe so eins vor 25 Jahren bei Doepfer erstanden. Das konnte 128 Tasten, gewichtet. Leider gibt es das nicht mehr. Aber aus dem Datenblatt könnte man ja noch etwas lernen.
abc.def schrieb: > Es gab mal ein IC namens E510. Ich habe so eins vor 25 Jahren bei > Doepfer erstanden. Das konnte 128 Tasten, gewichtet. Leider gibt es das > nicht mehr. Ein wirklich feiner Chip war das :-) Ich habe vor einigen Jahren mal welche bekommen, und zwar hier: http://www.cedos.com/e510_midi_chip.htm http://www.cedos.com/index.htm Datenblatt: http://www.cedos.com/datasheets/E510.pdf Ich kann mich freilich nicht mehr so ganz genau erinnern, aber glaube doch einigermaßen fest, daß ich bei der damaligen Kontaktaufnahme via Telephon zunächst bei irgendeinem Lebensmittelladen(!) rausgekommen bin. Das hat dann aber trotzdem alles wunderbar geklappt. Irgendein Bulgare oder so hat den E510 sogar mal "nachgebaut", und zwar mithilfe eines PICs: http://www.geocities.ws/JDPetkov/Hardware/mkcv96/mkcv96.htm
So, grad' nochmal schnell gegoogelt: die Adresse und Telephonnummer verweisen tatsächlich auf einen Edeka-Laden, Inhaberin Frau Cech - daher wohl CEDOS-Elektronik. Passt also alles. Vielleicht kann man die Chips dort auch im Laden an der Frischetheke kaufen? Etwa so: "Grüß Gott, i hätt gern hundert Gramm E510" - Nach Einfüllen in ein Plastikdöschen und prüfendem Blick auf die Waage: "Derf's au a weng mehr sei?"
Diodenes schrieb: > i hätt gern hundert Gramm E510" gibt es wirklich: Lebensmittelzusatzstoff Ammoniumchlorid E510 :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.