Audiosynthese: Midi- und GUI-Events interpolieren?
-
Hi,
leider gibts keine Rubrik "Audio-Programmierung", darum hoffe ich, dass mein Beitrag in diesem Unterforum richtig ist.
Ich habe mal eine Verständnisfrage zum Zusammenspiel von View und Model in Echtzeit Audio-Applikationen (wie in meinem anderen Thread beschrieben bastel ich sowas ja gerade).
Mal angenommen auf dem PC des Anwenders ist keine ASIO-Karte vorhanden und somit die Latenz recht hoch (im Worst-Case nehmen wir einfach mal 100ms an).
Mein AudioModel berechnet also nun 100ms Audio in einem Rutsch, was mache ich in der Zwischenzeit mit den Events des ViewModels (z.B. der Anwender dreht einen Knopf) oder er löst von extern Midi-Events aus (Anwender dreht lieber an realen Knöppen
).
Nun meine Frage:
A) Sample ich die 100ms die Events von GUI und Midi ab und übergebe sie dann bei der nächsten Bufferberechnung Sample-genau?oder
Merke ich mir den Zustand aller Parameter beim Start der Berechnung eines Buffers, vergleiche beim nächsten Durchlauf und interpoliere einfach zwischen den beiden Werten?
Ich habe mal im VST3 SDK geschaut wie die das da machen (ich baue aber gerade kein VST, sondern eine eigenständige Anwendung). Dort steht beschrieben (soweit ich das korrekt verstanden habe) das seit der Version 3 die Events Sample-genau übergeben werden, bei jeder Bufferberechnung.
Mir erscheint die Möglichkeit B einfacher umzusetzen. Kann der Benutzer überhaupt in so kurzen Intervallen die Parameter sinnvoll hörbar beeinflussen?
Mit ASIO wären das gerade mal 10~20ms, dass dürfte definitv nichts ausmachen. Aber die 100ms im Worst-Case bei Nicht-ASIO Karten (oder wenn der Anwender kein ASIO4ALL nutzen kann/mag/whatever) machen mir da Sorgen.Gibts vielleicht auch noch andere Möglichkeiten? Habt Ihr ein paar Tipps für mich wie ich hier am Besten vorgehen sollte?
Vielen Dank schon mal für alle Antworten im voraus,
GoaZwerg