Forum: Mikrocontroller und Digitale Elektronik midi lautstärke ändern? (ardoino)


von Markus C. (cano)


Lesenswert?

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!!!! :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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

von Markus C. (cano)


Lesenswert?

... hab ich ja schon probiert.

CC7
CC11
CC96

Zeigt alles keine Wirkung.

Hat jemand vielleicht ein funktionierendes Beispiel.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Markus C. (cano)


Lesenswert?

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
}

von Karl H. (kbuchegg)


Lesenswert?

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.

von Markus C. (cano)


Lesenswert?

... 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.

von jojo (Gast)


Lesenswert?

Sniffe das Midi Signal mit nem einer Mdid Monitor Software. gibts for 
free

von Markus C. (cano)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Markus C. (cano)


Lesenswert?

... 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 :-)

von ich (Gast)


Lesenswert?

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...

von Markus C. (cano)


Lesenswert?

... 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 :-)

von ich (Gast)


Lesenswert?

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? ;-))

von Markus C. (cano)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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).

von old man (Gast)


Angehängte Dateien:

Lesenswert?

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

von Markus C. (cano)


Lesenswert?

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 :-)

von ich (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Und hier zum Vergleich der entsprechende Eintrag beim TG100.

von Markus C. (cano)


Lesenswert?

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

von ich (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.