Frage:
Wie berechne ich die Midi-Stop-Zeit?
ja.
2015-05-07 22:05:34 UTC
view on stackexchange narkive permalink

Ich versuche, ein Programm zum Konvertieren der Musiknotation in Midi zu schreiben.

Wie wähle ich die Stoppzeit für eine Midi-Note aus?

Naiv könnte ich stop_time erwarten: = start_time + note_duration, aber bei vielen Instrumenten fällt die Note viel schneller ab als die Dauer. Bei einer Trommel zerfällt die Note sehr schnell und bei einem Organnot überhaupt.

Wenn ich zwei Noten (Crotchet, Crotchet) ohne Verzögerung dazwischen auf einem Klavier habe, würde ich am Ende die Startzeit planen der zweiten Note zur gleichen Zeit wie die Stoppzeit der ersten Note - aber ein Mensch würde dies niemals spielen - müsste es eine physische Zeitverzögerung geben, um Fingerbewegungen zu ermöglichen. Die Notiz wäre auch schnell verfallen - also könnte ich sie nach (sagen wir) 80% der Dauer stoppen.

Ist die Stoppzeit wirklich wichtig?

Irgendwelche Ideen?

Warum verwenden Sie nicht [MIDICSV] (http://www.fourmilab.ch/webtools/midicsv/#midicsv.1) für eine bereits erstellte Midi-Datei, um herauszufinden, was Sie tun sollten? Ich bin mir ziemlich sicher, dass Start + Dauer in jedem Fall, den Sie auflisten, in Ordnung ist, da Sie normalerweise eine Note für die gesamte Dauer halten möchten, aber nicht jedes Instrument in der Lage ist, sie aufrechtzuerhalten.
Sechs antworten:
MattPutnam
2015-05-07 22:21:49 UTC
view on stackexchange narkive permalink

Naiv könnte ich stop_time erwarten: = start_time + note_duration, aber bei vielen Instrumenten zerfällt die Note viel schneller als die Dauer. Bei einer Trommel fällt die Note sehr schnell ab und bei einer Orgel überhaupt nicht.

MIDI weiß nichts darüber, wie sie synthetisiert werden soll. Sie können denselben MIDI-Stream verwenden und ihn durch zwei verschiedene Patches mit unterschiedlichen Hüllkurven laufen lassen. Dies ist nichts, worüber Sie sich Sorgen machen sollten.

, aber ein Mensch würde dies niemals spielen - es müsste eine physische Zeitverzögerung geben, um Fingerbewegungen zu ermöglichen. Die Note wäre auch schnell verfallen - also könnte ich sie wohl nach (sagen wir) 80% der Dauer stoppen.

Jetzt kommen Sie in die gesamte "menschliche Wiedergabe" -Dose von Würmer. Dies ist wirklich für Sie zu entscheiden. Probieren Sie einige Dinge aus und prüfen Sie, ob sie richtig klingen. In diesem Fall würde ich vermuten, dass diese Lücke eine feste Zeitdauer sein sollte, nicht ein Prozentsatz der Notendauer.

Gute Antwort! Aber ich würde nicht zustimmen, dass "das ist wirklich Ihre Entscheidung" im letzten Absatz. Ich weiß, dass ich selbst verwirrt und verärgert wäre, wenn eine App behauptete, "Notation in MIDI umzuwandeln", und dann willkürliche Entscheidungen darüber traf, wie dies geschah. Wenn eine Note ein Viertel eines Taktes dauern soll, würde ich erwarten, dass sie genau das tut: Machen Sie sie zu 0,25 des Takts, auch wenn ein Mensch sie nicht wirklich so spielen würde. Ich würde ERWARTEN, dass ich es MANUELL humanisieren muss, wenn ich es humanisieren möchte. (Dies ist überhaupt kein Problem, wenn die App selbst eine explizite Option zum "Humanisieren" enthält.)
Diese Antwort macht einen guten Job, um die zwei getrennten Aspekte dieser Frage (Synthese und Leistung) auseinander zu ziehen. Auf der Syntheseseite ist es nichts wert, dass der Klang nicht nur vor dem Ende der Midi-Note abfällt, sondern aufgrund von Hall-Effekten auch über das Ende der Midi-Note hinausgeht. Keines dieser Probleme sollte sich jedoch auf das Auftreten des NoteOff-Ereignisses auswirken, das das Ende des Abspielens einer Note und nicht das Aufhören des Klangs darstellt. Was die Leistungsseite betrifft, ist die Antwort von Stephen Hazel angemessen (standardmäßig 100% Dauer -1 Tick, mit Anpassungen für notierte Artikulationen).
@CalebHines Es sind nicht nur Hall-Effekte, die dazu führen können, dass sich die Note nach dem Ausschalten der Note verlängert, sondern auch die Release-Zeiteinstellung des Synthesizers, der die Note spielt.
@topomorto Richtig und ein sehr wichtiger Punkt. Aber ich hatte keine Charaktere mehr. Der Hauptpunkt, den ich illustrierte, war, dass der Ton auf * beiden * Seiten des tatsächlichen Note Off-Ereignisses anhalten konnte. Ich hätte die Dinge wahrscheinlich besser formulieren können.
Stephen Hazel
2015-05-08 00:03:31 UTC
view on stackexchange narkive permalink

Wenn Sie eine Viertelnote haben, sollten Sie die Stoppzeit auf die Startzeit plus Dauer minus einem "Tick" einstellen.

Sie können in das Stakkato, Portato, Leggerio, Legato einsteigen, wenn die Musik spezifiziert es. Legato hat die volle Dauer (abzüglich eines Häkchens, damit es nicht mit der nächsten Note zu tun hat). leggerio ist das übliche Ende von 3/4 Dauer. Portato ist 1/2, Stacatto ist 1/4 oder weniger.

Sie sollten sich nicht darum kümmern, ob es sich um Schlagzeug, Klavier oder Orgel handelt. Wenn das in den Noten steht, sollte die Midi-Datei so sein.

Die Synthese erfolgt, nachdem das Midi entschieden wurde und eine ganz andere Dose Würmer ist.

Sie können das MIDI jedoch nicht vollständig ohne Berücksichtigung der Synthese schreiben. Schließlich ist MIDI einfach eine Reihe von Anweisungen für den Synthesizer, und wie der Synthesizer diese Anweisungen interpretiert, macht den eigentlichen Klang aus.
topo Reinstate Monica
2015-05-07 22:31:37 UTC
view on stackexchange narkive permalink

Sie müssen eine Vorstellung von der Lautstärkehüllkurve der jeweiligen Synthesizer-Stimme haben, die auf die MIDI-Nachrichten reagiert.

Wenn Sie ein Note-On auslösen, spielt normalerweise der angeschlossene Synthesizer den Angriff ab Teil des Klangs, dann der abklingende Teil des Klangs, bis er den Sustain-Pegel erreicht. Wenn Sie die Notiz loslassen (eine Notiz senden), verfällt die Note entsprechend der Abklingzeit.

Bei perkussiven Sounds ist die Attack-Zeit oft Null (sehr schnell) und die Abklingzeit und Release-Zeit sind oft genau gleich. Dies bedeutet, dass die Dauer der MIDI-Note eigentlich völlig irrelevant ist - Sie können die Note nach einer Millisekunde oder einer Minute senden, und es macht keinen Unterschied (abgesehen von einigen Feinheiten in Bezug auf die Zuweisung von Stimmen, aber wir können sie ignorieren das für jetzt).

Ein Klaviersound hat auch einen schnellen Anschlag und beginnt dann, auf Null zu fallen. Die Release-Zeit ist dann sehr schnell, da die Note beim Loslassen der Note gedämpft wird. Ich denke, Sie sind auf dem richtigen Weg, als Sie sagten, Sie müssen darüber nachdenken, wie lange ein menschlicher Spieler die Note tatsächlich gedrückt halten würde. Denken Sie daran, dass Musikstil und Spieltechnik einen Unterschied machen. In einigen Fällen können Sie auf einem Klavier die Noten so lange spielen, bis sie sich überlappen. in anderen Fällen würden Sie sie kurz und stakkato spielen. Sie haben auch die Möglichkeit, MIDI-Dämpfer / Sustain / Sostenuto-Controller-Meldungen zu verwenden, um Noten zu erweitern, anstatt Noten zu entfernen - wiederum abhängig davon, wie der Synthesizer programmiert ist.

Beachten Sie, dass Sie bei Sample-basierten Synthesizern auch die dem gespielten Sample innewohnende Lautstärkehüllkurve sowie die Synthesizer-Parameter berücksichtigen müssen.

Aber im Grunde genommen: Wenn der Sustain-Pegel der Synth-Stimme Null ist und die Release-Zeit und die Decay-Zeit gleich sind, spielt es keine Rolle, wann Sie die Note abschicken. In allen anderen Fällen wird es einen Unterschied machen.

Ich bin gespannt auf die Ablehnung ...
war nicht ich, aber ich würde sagen, weil es nicht die Frage anspricht, was eigentlich mit der Notiz zu tun ist; nur die Konsequenzen, wann es auftritt.
@Tetsujin Es ist eine Art "es hängt alles davon ab" -Antwort - aber so ist die derzeit am höchsten gewählte Antwort, nicht wahr? Außerdem dachte ich, ich hätte etwas detaillierter darauf eingegangen, worauf es tatsächlich ankommt * - ich habe bereits MIDI-Software geschrieben, also habe ich mich gefragt, ob ich vergessen habe, was ich gelernt habe, und einen Schulfehler gemacht habe! Naja. Vielen Dank.
Möglicherweise haben Sie zu viel zu diesem Thema zu sagen, um in eine einzige Antwort zu passen, topo morto. Haben Sie daran gedacht, eine Reihe von zusammengestellten Fragen zu stellen / zu beantworten? (Könnte Tage / Wochen / Monate / ... dauern) Oder haben Sie schon? (Sah nicht hin.) Vielleicht werde ich sie fragen. Ich lerne gerade MIDI, während ich lebe, atme und tippe.
@musicn um ehrlich zu sein Ich bewege mich jetzt in die entgegengesetzte Richtung - weg von MIDI hin zu weniger 'notenbasierten' Darstellungsweisen von Musik, aber ich werde trotzdem alle Fragen beantworten, die ich kann ...
user20283
2015-05-08 00:41:58 UTC
view on stackexchange narkive permalink

Die Dauer der Midi-Noten entspricht dem Zeitpunkt, zu dem Sie eine Taste drücken und wieder loslassen. Der Rest der Hüllkurve ist Sache des Synthesizers, der den Midi interpretiert. "Release" mit Schlaginstrumenten kann bedeuten, dass es aktiv gedämpft wird (offensichtlich mit einem HiHat).

Bei Melodieinstrumenten hängt es davon ab, ob Sie spielen, ob das Release die nächste Note erreicht, sich mit dieser überschneidet oder stoppt, bevor es spielt Legato, Legatissimo oder Leggiero. Dies hängt jedoch nicht wesentlich vom Instrumententyp ab: Grundsätzlich übersetzen Sie die Partitur in Midi, ohne dass die Wiedergabe vom tatsächlich verwendeten Midi-Instrument abhängt.

"Aber es hängt nicht besonders vom Instrumententyp ab" ist falsch - polyphone Synthesizer-Stimmen mit langen Release-Zeiten haben überlappende Noten, wenn die Note-Ons schnell genug kommen, * unabhängig * davon, wann die Note-Offs gesendet werden.
ja.
2017-08-12 00:03:02 UTC
view on stackexchange narkive permalink

Sehr gute Frage. Auch ich schreibe ähnlichen Code wie Sie.

Auch ich hatte mich darüber gewundert. Für ein Zupfinstrument oder eine Trommel ist die Dauer der Note mehr oder weniger irrelevant. Die Dauer gibt den Zeitpunkt an, zu dem die nächste Note beginnt, nicht der Zeitpunkt, zu dem die aktuelle Note endet.

Wenn Sie Klaviermusik nehmen und alle Noten wie 1 / kürzen. 16 Noten, aber stellen Sie sicher, dass die Startzeiten korrekt sind, dann klingt es nicht schlecht.

Ich habe auch ein Problem beim Programmieren einer monophonen Moog-Synthesizer mit einem MIDI-Controller festgestellt - beim Abspielen aufeinanderfolgender Noten, an die ich eine Notiz gesendet habe Befehle unmittelbar nach den vorhergehenden Note-Off-Befehlen, aber die Syntc konnte nicht schnell genug reagieren und einige Note-Ons wurden übersehen, so dass ich die Noten eine Millisekunde vor der nächsten Note-On-Befehl ausschaltete.

Um ehrlich zu sein, die Midi-Spezifikation hilft hier nicht weiter - Wenn ich zwei Noten auf Nachrichten desselben Kanals und mit derselben Tonhöhe gefolgt von einer Note sende, sollte die Note immer noch klingen (im Fall einer Orgel) - oder sollte ich zwei senden?

Es scheint mir, dass eine Note eine ziemlich komplexe Sache ist, sie hat eine gedruckte Darstellung (wie in einer Partitur) - sie hat eine tatsächliche Note zum Ein- und Ausschalten, die der Zeit entsprechen kann oder nicht Dies ist in der Partitur enthalten, und während der Wiedergabe können sich Lautstärke und Vibrato der Note ändern.

Ich stelle fest, dass einige DAWs (ich vergesse welche) das Drehen der Start- und Stoppzeiten innerhalb von zulassen eine Note in einem Pianorollen-Editor, sodass auf dem Display sowohl die nominalen Start- und Stoppzeiten (entsprechend einer Note in einer Partitur) als auch die tatsächlichen Start- und Stoppzeiten (die von der Partitur abweichen) angezeigt werden

Damit ein Klavier gut klingt, müssen Sie auch den Pedaland Beat und die Lautstärkevariationen berücksichtigen, die durch die Phrasierung impliziert werden - all dies ist ziemlich schwierig :-)

Laurence Payne
2018-09-02 05:43:29 UTC
view on stackexchange narkive permalink

Senden Sie die gesamte Schrittlänge. Es ist das Geschäft des Wiedergabeinstruments, was es damit macht.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...