Hallo Ich bin gerade mit Ardoino und MIDI unterwegs. Ich steuere mit einem Ardoino Mega ein Yamaha QY10 Tonerzeuger an. Folgendes Problem kann ich nicht lösen: Ich kann mit Note_on Töne einschalten und mit Pitch anschließend Töne in ihrer Frequenz ziehen. Das klappt alles wie gewünscht! Was ich jedoch nicht schaffe ist, während ein Ton eingeschaltet ist, nachträglich die Lautstärke ändern. Ich möchte gerne mit Hilfe eines Drucksensors, den ich über einen Analogeingang einlese, wie bei einem Blaswandler (Midisaxophon) mit der Atemluft die Lautstärke des Tones modulieren. Wenn ich Not_off schicke und anschließend wieder Note_on mit einem anderen Wert für Velocety, dann höre ich zwar die Lautstärkeänderung aber auch immer den neuen Anschlag. Das ist störend. Ein Midi „Control Change“ Befehl (7 Main Volume) zeigt überhaupt keine Wirkung. Nicht auf meinem Yamaha QY10. Aftertouch, Kommando 0xa_ oder 0xd_ zeigen auch keine Wirkung? Komischerweise klappt wieder Pitchbend mit Kommando 0xe_ Hmmm? Was mache ich falsch? Die Beispiele im Internet zeigen sehr schön, wie man Töne ein- und ausschaltet. Ich habe jedoch kein Beispiel gefunden, wie bei einem angeschlagenen Ton nachträglich die Lautstärke geändert werden kann. Hilfe!!!! :-)
Das Stichwort hierzu könnte "aftertouch" sein, das ist etwas, was allerdings bei weitem nicht jedes Midi-Gerät unterstützt. http://de.wikipedia.org/wiki/Aftertouch
Was du machen willst, nennt man in der Musik ein "Crescendo". Und das ist dann auch ein gutes Stichwort für Google. http://www.multitrackstudio.com/forum/viewtopic.php?t=902
... hab ich ja schon probiert. CC7 CC11 CC96 Zeigt alles keine Wirkung. Hat jemand vielleicht ein funktionierendes Beispiel.
Nun, vielleicht kann das Dein Klangerzeuger einfach nicht? Hast Du Dir mal den von Deinem Klangerzeuger unterstützten MIDI-Befehlssatz angesehen? Ansonsten hilft ja vielleicht das hier: http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec/aftert.htm
Hier mein Progrämmchen, ...
1 | void loop() { |
2 | if(31==ii) ii = 0; // ii = Soundnummer |
3 | Serial.write(0xc0); // Steuerbefehl Programmauswahl |
4 | Serial.write(ii); // Soundnummer |
5 | |
6 | // let's send a note-on
|
7 | Serial.write(0x90); // MIDI Note-on; channel 1 |
8 | Serial.write(60); // MIDI note 60 |
9 | Serial.write(127); // MIDI note velocity 127 |
10 | delay(333); // wait |
11 | |
12 | Serial.write(0xb0); // CC auf channel 1 |
13 | Serial.write(0x07); // Main Volume |
14 | Serial.write(10); // Pedalstellung 10, ... wird aber nicht leiser? |
15 | |
16 | Serial.write(0xe0); // Pitch, ... klappt prima! |
17 | Serial.write(0); // LSB |
18 | Serial.write(20); // MFB |
19 | delay(333); // wait |
20 | |
21 | Serial.write(0xe0); // Pitch zuück |
22 | Serial.write(0); // LSB |
23 | Serial.write(0); // MFB |
24 | delay(333); // wait |
25 | |
26 | // let's send a note-off
|
27 | Serial.write(0x90); // MIDI Note-off; channel 1 |
28 | Serial.write(60); // MIDI note pitch 60 |
29 | Serial.write(0); // MIDI note velocity 0 (i.e. note off) |
30 | delay(1000); // wait |
31 | |
32 | ii++; // Nächster Sound |
33 | |
34 | }
|
markus cano schrieb: > Hier mein Progrämmchen, ... ALles schön und gut. Aber wenn dein MIDI-Gerät die entsprechenden Befehle nicht unterstützt, dann kannst du bis zum St. Nimmerleinstag programmieren. An deiner Stelle würde ich mal mit anderer MIDI Software ausprobieren, ob die ein Crescendo mit deinem konkreten MIDI-Synthesizer hinkriegen. WEnn die das nicht schaffen, dann wirst du das wohl auch nicht schaffen. Wenn die das aber hinkriegen, dann würde ich alles daran setzen, mal mitzulesen was diese Software so an MIDI-Befehlen von sich gibt, selbst wenn ich mir dazu einen MIDI-Sniffer extra bauen müsste.
... hab noch mal nachgelesen. Mein QY10 unterstützt angeblich die CC-Kommandos (0xb0). Aber irgendwas klemmt halt noch. Das Problem sitzt mit Sicherheit vor dem PC, aber ich schaff halt den Durchbruch nicht.
Sniffe das Midi Signal mit nem einer Mdid Monitor Software. gibts for free
Hallo Jojo, Midi Monitor? Warum? Ich bin doch derjenige der sendet. Und ich weiß genau, welche Zeichen ich sende? Tonhöhe, Klänge, Pitch, … alles funktioniert tadellos. Also schließe ich daraus, dass der Übertragungsweg in Ordnung ist. Ich bin einfach zu doof die Lautstärke außerhalb eines Note_On Befehls einzustellen. Weiß nicht, wie das geht.
markus cano schrieb: > Hallo Jojo, > > Midi Monitor? Warum? > Ich bin doch derjenige der sendet. Und ich weiß genau, welche Zeichen > ich sende? Schon. Aber es sieht nicht danach aus, dass du weißt was du in diesem Fall konkret senden musst! Andere Programme wissen das und denen kann man auf die Finger schauen, was die senden um das gewünschte zu erreichen. Alte Regel: Wenn man selber nicht mehr weiter weiß, sieh dir an, wie andere das Gewünschte machen.
... ah ja, jetzt verstehe ich dich :-) Nur leider hab ich nix zum Senden. Ich hab den Ardoino und den Yamaha QY10. Bevor es hier richtig aufwändig wird, warte ich noch ein wenig. Vieleicht hat jemand Erbarmen mit mir und zeigt mir ein kleines Programmbeispiel :-)
Hallo Markus, ich bin der Meinung, du kannst aufhören mit probieren. Im Handbuch vom QY10 steht nichts von Aftertouch oder ähnlichem. Allerdings ist beispielsweise Pitchbend sehr wohl vorhanden. Und Volume beim NoteOn sollte auch funktionieren. Aber eben das Aftertouch, die nachträgliche Veränderung ist nirgends erwähnt, wird also vermutlich nicht existieren...
... und einen anderen Weg gibt es nicht. Ein Fußpedal ein Handrad? Aber die Control Change Kommandos gehen ja auch nicht. Werden ich mir wohl was anderes kaufen müssen? Ist halt schon was älteres der QY10 :-)
Fußpedal ja, aber nicht als Midi-Version, sondern im Audio-Ausgang. Das beeinflußt aber dann bei polyphoner Klangerzeugung das gesamte Signal, nicht nur eine Voice. Logisch. Aber besser als nix. Kommt drauf an, was du machen willst. Und ja, der ist schon etwas älter. Wird mittlerweile auch nur noch um die 20,-€ gehandelt. Wenn man da das Motif Rack XS mit ca. 1300,-€ sieht, kann es einem schon das Wasser in die Augen treiben, oder? ;-))
polyphone Klangerzeugung brauch ich gar nicht. Ich hab mir die Mechanik eines Saxophons nachgebaut. Anstatt der Klappen hab ich Magnetfeldsensoren, die die Tastenstellung auswerten. Wenn alles funktioniert, möchte ich in einen hochwertigeren Klangerzeuger investieren. Wenn ich das mit der dussligen Lautstärke noch hinbekommen würde, wäre ich am Ziel.
markus cano schrieb: > Werden ich mir wohl was anderes kaufen müssen? > Ist halt schon was älteres der QY10 :-) Scheint mit dem Alter nicht viel zu tun zu haben. Hab gerade mal in der Referenz für meinen Yamaha TG100 von 1991 geschaut, der unterstützt CC auf Controller 7 (Main Volume).
Spar dir das Suchen. Den einzigen CC Befehl den das Teil kennt ist 64 für Sustain. Ich hänge mal die Midi Implementation an. Hoffentlich ist mir Yamaha deswegen nicht böse. Also entweder eine anderes Soundmodul nehmen oder wenn's nur um einen Kanal geht ein elektronisches Poti hinter das Modul. Die Ansteuerung kann der MC gleich mit machen. http://www.mikrocontroller.net/mc-project/Pages/Projekte/ICs/Dig.%20Poti/digPoti.html
CC auf Controller 7 zeigt bei mir leider keine Wirkung. Siehe code oben, da hab ich das ausprobiert. Ich denke auch, dass das irgendwie gehen muss. Vielleicht ist vor dem Senden des CC7 noch eine Voreinstellung, ein weiteres Kommando erforderlich. Ich gebe noch nicht auf :-)
Du glaubst es wirklich nicht, oder? Hier mal ein Ausschnitt aus dem Midi-Chart. Da steht drin, daß NUR cc64 (Sustain) empfangen werden kann (das kleine "o") alles andere ist nicht implementiert ("x"). Wirst wohl wirklich auf was anderes umsteigen müssen. Der kann das nicht...
ah ja :-) Ne quatsch, ich glaub Dir das. Irgendwie hab ich Deine Antwort zu spät gesehen und schon losgeschrieben. Vielen Dank für Deine Zeit und Mühe :-) Grüße Markus
Alles klar :-) Schade, daß du jetzt enttäuscht bist, aber so ist es halt... Schönen Abend!
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.