midi lautstärke ändern? (ardoino)

OP #3313654
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!!!! :-)
OP #3313714
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
}
#3313758
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.
OP #3314005
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.
#3314011
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.
OP #3314029
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 :-)
Gast #3314054
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...
Gast #3314076
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? ;-))
OP #3314093
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.
Gast #3314117
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
Angehängte Dateien:
OP #3314121
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 :-)
Gast #3314132
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...
Angehängte Dateien:

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