Hallo zusammen, wie der Betreff bereits verrät, möchte ich einen MIDI-Controller bauen. Das Projekt hat mit meiner Seminararbeit in der Schule zu tun und ich bin weiß Gott kein Experte für E-Technik, weshalb ich darum bitte, schonend mit mir umzugehen, sollten meine Fragen banal erscheinen :) Zuerst möchte ich schreiben, wie ich mir die ganze Geschichte vorstelle: 1. Die Knöpfe am Gerät selbst beinhalten je zwei ineinanderliegende Spulen, von denen die eine stationär und stromdurchflossen und die andere beweglich und dafür vorgesehen, Induktionsstrom abzugreifen, ist. Der Sinn dieser Konstruktion ist es, eine Anschlagsdynamik zu erzeugen. 2. Der abgegriffene Induktionsstrom wird in einen Integrierer geleitet, der den ganzen über die Zeit erzeugten Strom aufaddiert und somit indirekt anzeigt, wie tief der Knopf gedrückt wird. 3. Über einen AD-Umsetzer wird der Strom in digitale Signale umgewandelt 4. Die einzelnen Signale eines jeden Knopfes werden nacheinander und in einer bestimmten Reihenfolge abgenommen und in ein USB-Kabel geleitet. 5. Eine selbstgemachte Treibersoftware setzt die Signale in MIDI-Dateien um, die von einem Softwaresynthesizer interpretiert werden können. Punkte 1 bis 3 dürften kein Problem sein (vorausgesetzt, mein handwerkliches Geschick und mein Budget reichen aus :) ), Punkt 4 ist die Stelle, an der ich nicht mehr weiter komme: es wird so viele AD-Umsetzer geben, wie es Knöpfe geben wird (vermutlich aus praktischen Gründen nicht allzu viel, aber es werden schon ein paar sein) und diese Knöpfe liefern alle gleichzeitig Daten; nur wie ich diese Daten bitweise weiterleiten soll, weiß ich beim besten Willen nicht. Punkt 5 stelle ich noch in den Hintergrund. Freue mich schon auf eure Antworten!
So ganz verstehe ich nicht was du vorhast. Soll dein Controller Tasten haben (-> Anschlagdynamik) oder Drehknöpfe? In letzterem Falle verstehe ich weder den Sinn einer Anschlagdynamik noch deinen technischen Lösungsansatz. Im einfachsten Falle würde man Potis nehmen, so wie es die Controller-Selbstbauer schon seit vielen Jahren machen. Warum soll der Controller nicht direkt ein MIDI-Signal ausgeben? Kommt mir ebenfalls sinniger vor ... Aber vielleicht ist (mir) einfach noch nicht klar geworden was du machen willst.
Nur so, möchtest du quasi ein simples keyboard (elektronisches Klavier) bauen? Weil so ganz verstehe ich nicht was du machen möchtest? Vor allem diese Anschlagsdynamik
Ja, ich würde sagen "simples Keyboard" trifft es gut. Tut mir leid, wenn ich durch das Wort "Knopf" für Unklarheiten gesorgt habe; das liegt daran, dass ich Druckknöpfe benutzen will, die ich dann nicht in einer Reihe nebeneinander legen will wie die Tasten eines Klaviers, sondern in Reihen und Spalten wie die Bünde und Saiten einer Gitarre (erhoffe mir dadurch bessere Spielbarkeit, weil ich eigentlich Gitarrist bin, aber wie die Sache in der Ausführung aussehen wird, wird sich noch zeigen).
Bleibt noch die Frage, warum du nicht gleich MIDI erzeugen willst, sondern erst irgendwelche Daten, die du dann über USB übertragen mußt. Und dann noch einen Treiber schreiben, der die Werte irgendwie nach MIDI übersetzt? Wenn du gleich MIDI ausgibst, kannst du damit einen beliebigen Klangerzeuger ansteuern. Ein Rack, ein Keyboard oder Synthesizer, oder auch ein Software-Instrument auf dem PC.
Hallo npn, daran habe ich auch schon gedacht, bin aber zur Überzeugung gekommen, dass es für mich persönlich einfacher ist, diese Arbeit von einem Computer erledigen zu lassen.
Max Kölbl schrieb: > Hallo npn, > > daran habe ich auch schon gedacht, bin aber zur Überzeugung gekommen, > dass es für mich persönlich einfacher ist, diese Arbeit von einem > Computer erledigen zu lassen. Na ok, deine Entscheidung. Aber dann kannst du das Teil nur am PC anschließen und an kein anderes Gerät. Genau das zeichnet ja eigentlich ein Musikinstrument aus. Der Tag wird kommen, wo du das Teil auch mal an einen Synthi anschließen willst. War ja nur ein Vorschlag :-)
Es ist ja nur ein Schulprojekt :) Ich finde, ich betreibe eh einen viel zu großen Aufwand... trotzdem danke für den Vorschlag!
Also vorne weg: Das Projekt ist für einen Anfänger (der scheinst du zu sein) sehr komplex. Für eine einfache Seminararbeit zu aufwendig. Zum Thema AD-Wandler: Schau dir an wie Atmel das in seinen Atmegas gemacht hat. Dann sparst du ein paar AD Wandler. Ansonsten kriegst du AD-Wandler mit SPI oder I2C Interface, sind aber nicht gerade günstig. Die geben dir das Signal gleich als Binär kodierte Zahl aus. Also einen Wert zwischen 0 und 1024 (bei einem 8 Bit AD Wandler). Das du am Computer das schneller erzeugt kriegst, naja deine Sache. Hast du schon einen uC mit USB und wenn ja welchen ? USB ist eine größere Baustelle, da kommt noch mal was auf dich zu. Wenn du allerdings einen USB-UART Wandler nutzt, ist der Aufwand direkt Midi auf dem uC zu erzeugen fast gleich (Midi ist relativ einfach zu erzeugen, aber da findest du viel Code im Netz). Einen USB-Midi Treiber schreiben dauert auf jeden Fall länger (es sei denn du hast so etwas schon häufiger getan, das weiß ich natürlich nicht).
Alexander schrieb: > Also vorne weg: Das Projekt ist für einen Anfänger (der scheinst du zu > sein) sehr komplex. Für eine einfache Seminararbeit zu aufwendig. Ja, ich bin definitiv Anfänger und die Komplexität dieses Projekts ist mir bewusst. Diese ganze MIDI-Geschichte interessiert mich halt und ich hätte mir erhofft, durch dieses Projekt die ganze Chose ein bisschen besser zu begreifen. > Zum Thema AD-Wandler: Schau dir an wie Atmel das in seinen Atmegas > gemacht hat. Dann sparst du ein paar AD Wandler. Ansonsten kriegst du > AD-Wandler mit SPI oder I2C Interface, sind aber nicht gerade günstig. > Die geben dir das Signal gleich als Binär kodierte Zahl aus. Also einen > Wert zwischen 0 und 1024 (bei einem 8 Bit AD Wandler). Klingt interessant. Danke für den Tipp, werde ich mir ansehen. > Das du am Computer das schneller erzeugt kriegst, naja deine Sache. Hast > du schon einen uC mit USB und wenn ja welchen ? USB ist eine größere > Baustelle, da kommt noch mal was auf dich zu. USB ist eine vertrackte Sache, das ist mir klar. Bis jetzt weiß ich auch noch nicht besonders viel darüber und nein, ich besitze keinen uC mit USB und wenn ich ehrlich sein soll habe ich auch keine Ahnung was das ist... > Wenn du allerdings einen > USB-UART Wandler nutzt, ist der Aufwand direkt Midi auf dem uC zu > erzeugen fast gleich (Midi ist relativ einfach zu erzeugen, aber da > findest du viel Code im Netz). > Einen USB-Midi Treiber schreiben dauert auf jeden Fall länger (es sei > denn du hast so etwas schon häufiger getan, das weiß ich natürlich > nicht). Ok, die Sache mit dem Treiber geb ich auf! Die Idee war offenbar eine Sackgasse. Aber kannst du das, was du geschrieben hast, bitte ein wenig genauer erklären?
Hey, also ich würde zuerst einmal einen uC aussuchen. Vllt. ein Arduinoboard (ist hier ein wenig verpönt, aber man kommt schnell zu Ergebnissen). Vorteil wäre: Es gibt dafür schon eine Midi-Library. Alternativ kannst du natürlich auch einen Atmega Prozessor so kaufen. In beiden Fällen empfehle ich dir das AVR Tutorial hier auf der Seite: http://www.mikrocontroller.net/articles/AVR-Tutorial Da kriegst du erst ein mal einen Überblick was du grundsätzlich benötigst. Wenn du das hast, schreib erst ein mal ein kleines Programm (LED blinken, Taster auslesen). Wenn du den Taster ausgelesen hast, schreib dir die Routinen zum Senden von Midi. Dafür benötigst du den UART (wie der funktioniert, steht im Tutorial). Zu Midi: http://www.mikrocontroller.net/articles/MIDI Das ist jetzt schon einiges, aber wenn das läuft, kannst du dich mit dem AD Wandler beschäftigen. Jedoch hast du bis hierhin was lauffähiges für die Schule. Dann kannst du den AD Wandler in Angriff nehmen. Die Atmegas von Atmel haben einen eingebaut, der wird mittels eines Multiplexers zwischen 6 Eingängen umgeschaltet. Das könnte man vllt. noch erweitern mit einem weiteren Multiplexers. Alternativ natürlich einen externen AD Wandler (haben meist höhere Auflösung). Vor diesem könnte man auch wieder einen Multiplexer schalten und so ein wenig sparen. Ich glaub damit kommst du relativ gut voran.
Hallo Alexander, meine Dankbarkeit ist nicht mit Worten auszudrücken. Wenn ich diese Sachen richtig verstehe, scheinen sie wirklich alles zu beinhalten, was ich brauche und sogar noch mehr :) Werde mich in der nächsten Zeit damit beschäftigen. Abgabetermin für die Arbeit ist Januar, und die Sommerferien stehen auch an, ich hab also genug Zeit, um diesen Informationsbatzen, den du mir gegeben hast, zu verarbeiten :D
Max Kölbl schrieb: >> Das du am Computer das schneller erzeugt kriegst, naja deine Sache. Hast >> du schon einen uC mit USB und wenn ja welchen ? USB ist eine größere >> Baustelle, da kommt noch mal was auf dich zu. > > USB ist eine vertrackte Sache, das ist mir klar. Bis jetzt weiß ich auch > noch nicht besonders viel darüber und nein, ich besitze keinen uC mit > USB und wenn ich ehrlich sein soll habe ich auch keine Ahnung was das > ist... MIDI ist erheblich einfacher als USB, und du brauchst dich nicht noch um irgendwelche Software drumherum kümmern. Du brauchst nur den UART mit einer einfachen Beschaltung, und dann musst du für drücken und loslassen von Tasten jeweils drei Bytes senden, und das war's.
Ja, inzwischen hab ich mich überzeugen lassen :) Schätze, ich probiere diesen Arduino aus. Hab mich gestern noch darüber informiert und ich denke, das ist genau das, was ich brauche. Trotzdem danke für deinen Beitrag.
genau. dann brauchst du nur noch die wandlung; sobald alles digitalisiert ist, übernimmt die midibox.
Alexander schrieb: > Die geben dir das Signal gleich als Binär kodierte Zahl aus. Also einen > Wert zwischen 0 und 1024 (bei einem 8 Bit AD Wandler). Hallo! Hast Du den binären Zahlenbereich neu erfunden? :-)
Route 66 schrieb: > Hallo! > Hast Du den binären Zahlenbereich neu erfunden? :-) Na, vielleicht hat er schon dezimiert :-) An den TE: Sieh Dir mal meinen MIDI32 auf meiner Webseite an, der hat ähnliche Ansprüche (0...1023) und eine Beschleunigungsfunktion. Das, was Du "Anschlagsdynamik" nennst, dürfte auf Dasselbe hinauslaufen, wobei Du es analog produzierst und damit genauer und schneller bist, als ich, allerdings wirst Du dann sehr schnell drauf kommen, dass Du auch ein schnelles MIDI brauchst. Das war seinerzeit mein Problem. Mit den klassischen Analog-2-MIDI Conversions Schaltungen, die es haufenweise zu kaufen gibt, wirst Du nicht weit kommen. Wenn es was bringen soll, brauchst Du USB-Ausgang. Hier ist was zur Inspriation: Mein "MIDI2000" : http://www.96khz.org/oldpages/limitsofmidi.htm Die Hardware : http://www.96khz.org/htm/midiviaspdif.htm
Ja, Anschlagsdynamik (oder "Velocity") dürfte das Gleiche sein wie eine Beschleunigungsfunktion. Dieser Wert gibt an, wie schnell eine Taste gedrückt wird und ist das zweite der drei Standardbits, die immer anfallen, wenn man eine Note spielen möchte. Aber das weißt du vermutlich eh schon :) Über die Geschwindigkeit habe ich mir schon von anfang an Sorgen gemacht. Analoge Signale sind zwar schnell bei Empfänger, aber dort müssen sie trotzdem noch umgewandelt werden. Alle nacheinander. Wenn ich bei, sagen wir, zwölf Tasten wäre das noch kein Problem, aber sollten es mehr Tasten und vielleicht ein paar simple Controller werden (hätte nämlich schon vor, den Apparat von Zeit zu Zeit zu erweitern; auch nach dem Abgabetermin meiner Seminararbeit), dauert eine Rundherumabtastung aller eingehender Werte entsprechend länger. Außerdem würden mir am uC langsam die Pins ausgehen, aber das ist ein anderes Thema... Bezüglich USB: die meisten uC haben doch eine USB-Buchse zum Programme überspielen/Daten einlesen. Wäre das nicht die Lösung?
Klar, USB wäre in allen Belangen die Lösung. Es braucht aber eben noch ein Stück hardware, dass die Tasten sequenzialisiert. Bei mir geht das von Anbeginn an mit 25 MHz. Für eine slotbreite von 128 Tasten / 128 Controller geht das dann mit immerhin 96kHz Abtastung, also synchron in einem sample. Mit USB 2.0 bekäme man die Daten auch entsprechend weg. Fragt sich halt nur, was ein Zielsystem wie z.B. ein PC wieder draus macht, z.B. an Latenz addiert.
:
Bearbeitet durch User
Oh weh, eine neue Baustelle! Na gut, man kann nicht behaupten, dass das Thema schnell langweilig wird, es gibt immer wieder Neues zu entdecken... Sanken für deinen Kommentar, werde mich einlesen.
Es ist peinlich zuzugeben, aber passiert ist nicht besonders viel. Ich hab jetzt einen Arduino Due zu Hause liegen und einen Freund konsultiert, mir bei der Durchführung des Projekts zu helfen. Außerdem ist das Projekt nicht mehr teil meiner Seminararbeit, weil es sich nicht richtig ins Thema einbauen lässt. Stattdessen wird es fürs Schülerforum oder Jugend Forscht benutzt. Sobald es fertig ist, werde ich es mit den erforderlichen Hintergrundinformationen in diesem Thread veröffentlichen.
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.