Tick ??Ton werden im Speicher gehalten. AVAudioPlayer? SystemSounds? Core Audio?
-
03-10-2019 - |
Frage
Ich versuche, eine sehr kleine Audiodatei abzuspielen -. Es etwa in der Länge 0,05 s, und es ist eine unkomprimierte WAV-Datei
Rgiht jetzt, ich bin mit AVAudioPlayer
den Ton zu spielen.
Ich beabsichtige, den Ton mit hohen Geschwindigkeit entlang einer Schleuder zu spielen, a la The Price Is Right oder Glücksrad. Wenn ich die AVAudioPlayer
mit einer Schleifenzahl von 100 instanziiert, ist es in der Tat den Ton spielt sehr schnell, wie ich erwarten würde.
Wenn ich [audioPlayer play]
auf jedem ‚ticken‘ des Spinners ausführen, jedoch fällt das Audio schrecklich hinter. Meine Vermutung ist, dass, im Gegensatz zu einer hohen Schleifenzählung Einstellung [audioPlayer play]
erfordert eine vollständigen Auf- und Abbau des Speichers des Audio-Clips für jede Wiedergabe.
Gibt es eine Möglichkeit den Clip zu zwingen, für eine längere Dauer in Erinnerung einrichten bleiben? Es ist eine sehr häufige Ton, und als solche würde auch halten es bis während der gesamten App Lauf in Ordnung sein.
Lösung
Wenn Sie auf präzisere Timing abhängen, können Sie mit einer der anderen Sound-APIs, um zu versuchen. Audio Unit RemoteIO ist kompliziert, sondern ermöglicht die präziseste Timing von unkomprimierten Sounds zu spielen. OpenAL und Audio-Warteschlangen sind zwei weitere Optionen.