Windows ist kein Echtzeitbetriebssystem, daher verfügen Sie in Windows nicht über echte Echtzeitverarbeitungsfunktionen.
Mit Windows Vista bot Microsoft eine neue API an, die unter anderem auf strenge Leistung abzielte, wobei Exclusive-Mode-Streams eine Leistung nahezu in Echtzeit versprachen. Dies wird durch ein paar leistungsstarke Dinge erreicht, die zusammenarbeiten, einschließlich eines kurzen und exklusiven Wegs zur Audio-Hardware von Komponenten im Benutzermodus und einer spezifischen Multimedia-Planung. Lassen Sie mich das Wiki dazu zitieren :
Für Audio-Profis wurde ein neuer WaveRT-Port-Treiber eingeführt, der mithilfe des Multimedia-Klassenplaners eine Echtzeitleistung erzielen soll und Audioanwendungen unterstützt, die die Latenz von Audio-Streams verringern. Infolgedessen können Anwendungen im Benutzermodus Audiostreams vollständig steuern, ohne dass zur Laufzeit Code im Kernel ausgeführt wird. WaveRT ermöglicht der Anwendung im Benutzermodus den direkten Zugriff auf die internen Audio-Hardware-Puffer und Sample-Positionszähler (Daten im Speicher, die der Audio-Hardware-DMA-Engine zugeordnet sind). Damit können Anwendungen die aktuelle Position im DMA-Speicherfenster abfragen, auf die die Hardware zugreift. WaveRT unterstützt auch die Vorstellung eines Hardware-generierten Taktbenachrichtigungsereignisses, ähnlich der ASIO-API. Damit Anwendungen nicht nach der aktuellen Position abfragen müssen, wenn sie dies nicht möchten. WaveRT funktioniert jedoch nur mit PCI-, PCI Express- oder Onboard-Audiogeräten. Es funktioniert nicht mit USB- oder FireWire-Schnittstellen, die in der professionellen Audioindustrie weiter verbreitet sind.
Diese neue Betriebsart eröffnete aufregende Möglichkeiten für die Audioverarbeitung mit geringer Latenz, wie von zufriedenen Benutzern berichtet :
Ich erhalte perfektes, stabiles Audio mit 2 ms Puffern + 0,5 ms Latenz im Vergleich zu semistabilem Audio in 4 ms Puffern (+ 5 ms Ausgangslatenz) mit ASIO.
Abhängig davon, ob diese Echtzeitnäherung für Sie gut ist, ist Windows möglicherweise immer noch eine gute Umgebung für die erwähnte Aufgabe.
Ob dies möglich ist oder nicht, hängt von Ihren Latenzanforderungen ab, dh von der Gesamtverzögerung zwischen Eingabe und Ausgabe. Ein guter Ausgangspunkt könnte das Einrichten einer digitalen Audio-Workstation mithilfe von Aufzeichnungssoftware wie ProTools, Sonar, Ableton, Cubase usw. sein. Diese arbeiten mit kostengünstiger (Art) E / A-Hardware und werden mit optimierten Treibern mit geringer Latenz geliefert. Einige davon verfügen über "Plug-In" -Schnittstellen, über die Sie Ihre eigene Signalverarbeitung durchlaufen können. Ein beliebtes Format ist VST von Steinberg, das von vielen Hosts unterstützt wird. Früher war es offen und kostenlos, jetzt ist möglicherweise eine Lizenz erforderlich.
Diese http://www.kvraudio.com/wiki/ ist eine gute Ressource für solche Dinge.
Wenn Sie in Matlab verarbeiten möchten, müssen Sie möglicherweise Ihre eigenen Treiber schreiben. Ich habe gesehen, dass dies mit DLLs und auch nativen JAVA-Schnittstellen gemacht wurde. Sie können auch etwas zusammen mit audioplayer () und audiorecorder () hacken, aber diese erfordern möglicherweise eine ziemlich hohe Latenz, um mit Windows-Interrupts umzugehen und andere Dinge zu tun. Im Wesentlichen richten Sie ein GUI-Steuerelement mit einem Rückruf ein, der zu einem bestimmten Zeitpunkt ausgelöst wird. Im Rückruf lesen Sie alle verfügbaren Eingaben, verarbeiten sie, schieben sie in die Ausgabe und hoffen auf das Beste.
Im Allgemeinen ist es hilfreich, die Windows-Box so "sauber" wie möglich zu halten, dh keine Netzwerkverbindung (während Sie Audio verarbeiten), keine Antivirensoftware und nur das absolute Minimum an Startelementen, Software und Diensten auszuführen.
quelle