Das Herzstück von MIDI ist die Darstellung von Musik als diskrete Notenereignisse, von denen jedes eine statische Tonhöhe hat. Dies ist perfekt für die Darstellung von Musik, wie sie auf Tasteninstrumenten gespielt wird. Sie können jede Frequenz, die einer Note auf der temperierten Skala entspricht, in eine MIDI-Notennummer umwandeln, indem Sie:
69 + 12 × log2fr e qu e n c y440
Unter der Annahme, dass der MIDI-Receiver für A4 = 440 Hz kalibriert ist.
Diese Darstellung ist für Klaviermusik in Ordnung, aber das Problem besteht darin, wie Tonhöhen dargestellt werden, die nicht der temperierten Skala zugeordnet sind (nicht-westliche Musik, nicht-musikalische Klänge), und wie Tonhöhenvariationen über die Dauer einer Note dargestellt werden (glissando, Vibrato).
Dies erfolgt in MIDI mithilfe von "Pitch Bend Messages", die den Synthesizer anweisen, die Tonhöhe der aktuell gespielten Note um ein kleines Intervall zu verschieben. Die meisten Synthesizer sind standardmäßig für +/- 2 Halbtöne im Verlauf des Pitch-Bend-Nachrichtenbereichs (0 .. 16383) kalibriert. 8192 entspricht keiner Tonhöhenbiegung - die emittierte Tonhöhe entspricht genau der des Notenwerts. Die Abbildung zwischen dem Pitch Bend-Wert und dem Frequenzverschiebungsverhältnis ist gegeben durch:
fe m i t t e d_ N o t efn o t e _ m e s s a ge= 2p i t c h b e n d- 81924096 × 12
Sie können also die Frequenz einer von einem Synthesizer gespielten Note aus der folgenden Formel ermitteln:
440 × 2n o t e - 6912.0+ p i t c h b e n d- 81924096 × 12
Wobei Note die 7-Bit-MIDI-Notennummer der zuletzt empfangenen Note On- Nachricht ist; und Pitchbend ist der 14-Bit-Wert der zuletzt empfangenen Pitch-Bend- Nachricht. Ein Synthesizer beginnt mit einem auf 8192 eingestellten Pitch-Bend-Register, und dieser Wert wird auch während des Empfangs einer Meldung "Alle Controller zurücksetzen" zurückgesetzt.
Nehmen wir das folgende Beispiel. Sie möchten einen Flötentriller mit der folgenden Frequenzbahn ausdrücken: 500 Hz, 510 Hz, 500 Hz als MIDI-Meldungen.
Die Basisnotennummer lautet:
r o u n d( 69 + 12 × log2( 500 / 440 ) ) = 71
Sie senden also eine "Note on" -Nachricht mit der Note # 71. Dies entspricht einer Tonhöhe von:
440 × 2( 71 - 69 ) / 12= 493,88
Welches ist die nächste Tonhöhe auf der temperierten Skala. Sie müssen eine Pitch Bend-Nachricht senden, um die Tonhöhe um den Faktor zu erhöhen:
500493,88= 1,0124
Und holen Sie sich Ihre 500 Hz. Der entsprechende Pitch Bend-Wert ist:
r o u n d( 8192 + 4096 × 12 × l o g21,0124 ) = 9065
Um Ihre 510 Hz zu erhalten, wäre der Pitch Bend-Wert:
r o u n d( 8192 + 4096 × 12 × l o g2510493,88) = 10469
Ihre Folge von MIDI-Nachrichten für 500, 510, 500 Hz wäre also:
- ANMERKUNG 71
- PITCH BEND 9065
- ...
- PITCH BEND 10469
- ...
- PITCH BEND 9065
Sie können sich die MIDI-Notennummer als "integralen" Teil der Tonhöhe vorstellen. und die Tonhöhenbiegung als redundanter "Bruchteil" der Tonhöhe.
autocorrelate
, die mir als die ausgegebene MIDI-Note erscheint. Beachten Sie dasmidi2pitch
Array in der Formel? Wenn ich Recht habe, bedeutet dies, dass ich immer noch nicht über denbend
Wert oder den tatsächlichen Wert der Tonhöhe verfüge , anhand derer ich den Biegewert abschätzen kann, und dass ich sie auch nicht erhalten kann, es sei denn, ich habe eine MIDI-Datei. Ein einfacher Fall von zu vielen Variablen und zu wenigen Gleichungen. Wie schätze ich die Biegung, den tatsächlichen Teilungswert undvelocity
in diesem Fall die?MIDI ist ein Protokoll, mit dem (hauptsächlich) Synthesizer andere Synthesizer oder Computer steuern oder von diesen gesteuert werden können.
Es handelt sich um ein serielles Protokoll, mit dem Nachrichten wie "Taste C1 hoch", "Taste D4 runter", "Schlüsselgeschwindigkeit", "Klangänderung" usw. ausgetauscht werden können. Viele Controller verfügen über ein "Pitch Wheel", das ein Joystick oder ein Modulationsrad ist Der Spieler kann interaktiv die Tonhöhe der aktuell gespielten Note ändern, um manuell ein Vibrato zu erzeugen oder kontinuierlich von einer Note zur nächsten zu "gleiten". Dies geschieht häufig bei Gitarristen, indem er die Bundsaite mit der linken Hand biegt Pitch Bending und damit der Name.
Mit der MIDI-Pitch-Bend-Meldung können Sie kommunizieren, wie viel Pitch-Shifting zu einem bestimmten Zeitpunkt stattfinden soll. Ein Synthesizer (Software oder Hardware), der eine Pitch Bend-Nachricht empfängt, soll die Tonhöhe aller aktuell gespielten Noten um den angegebenen Betrag ändern.
Die Controller-Nachricht hat ein Argument, das von -8192 bis 8191 reicht, und in Standard-MIDI-Dateien soll dies den Bereich von -200 Cent bis 200 Cent abdecken, wobei 1 Cent 1/100 Halbton ist, dh ein Verhältnis von 2 ^ ( 1/1200) = 1.000577789506555. Beispiel: Um eine Tonhöhenverschiebung nach unten zu erzeugen, um 93% der Nennfrequenz zu erreichen, wäre der Reglerwert
oder -5146 in diesem Fall. 0,93 ist das gewünschte Verhältnis, 12 die Anzahl der Halbtöne pro Oktave, 2 der maximale Tonhöhenbiegebereich (in diesem Fall 200 Cent oder 2 Halbtöne) und log2 () der Logarithmus mit Basis 2.
Bei den meisten Synthesizern ist der Bereich jedoch konfigurierbar, und es ist wahrscheinlich keine gute Idee anzunehmen, dass sich alle Synthesizer gleich verhalten.
Hier ist eine Umrechnungstabelle, die helfen kann. http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml
quelle