Frage

Ich arbeite an einer App, die Notizen aus einer 12-Tonnen-diatonischen Skala zurückspielt, die mehrere Oktaven umfasst. Dies ist im Grunde genommen ein provisorischer wellbarer Synthesizer.

Mal das mit der Anzahl der zu verwendenden Instrumente.

Die Notizen werden als .wav -Dateien gespeichert und werden in RAM zwischengespeichert, um den Aufwand vom Abrufen von Festplatten zu verhindern. Es gibt jedoch einen großen Zeitraum-Kompromiss in Bezug auf das physische Gedächtnis, da .WAV-Dateien ziemlich groß sein können.

Hat jemand eine Vorstellung davon, wie man diese .wav-Dateien platzeffizienter gestalten? Komprimierung ist eine gute Option, aber zu viel kann die Qualität beeinträchtigen. Das Modulieren oder Verzerrung der Frequenzen im laufenden Fliegen ist definitiv zu verzögert. Korrigieren Sie mich, wenn ich falsch liege, aber mit dieser Implementierung 200 bpm zu spielen, wird nicht funktionieren.

Wenn Sie Erfahrung mit Musik -Apps haben, teilen Sie bitte Ihren Rat mit.

War es hilfreich?

Lösung

Keine Erfahrung mit Musik -Apps an sich, aber ich habe Audio, einschließlich der Aufnahme, verwendet.

Auf dem iPhone laden Sie den gesamten Audio normalerweise nicht in RAM, da die Größenbeschränkungen und die Geschwindigkeit der Festplatte. Mit der Audioqueue -API schreiben Sie eine Rückruffunktion, die einen Puffer von der Festplatte bevölkert (normalerweise mit AudioFile -Methoden). Sie können Puffergrößen und Pufferzählungen angemessen auswählen, um die Audio -Wiedergabe Ihrer Anwendung reibungslos zu halten.

Sie sollten wahrscheinlich auch die Kompressionsmöglichkeiten untersuchen. So etwas wie verlustfreier AAC sollte Ihnen eine Reduzierung der Dateigröße um 50% ohne Qualitätsverlust auf Kosten eines erheblichen Verarbeitungsaufwands kaufen.

Wirklich, es hört sich so an, als würden Sie versuchen, hier zu früh zu optimieren. Schreiben Sie einen experimentellen Code, um festzustellen, ob Sie 200 bpm aus dem Ladestil der Standarddatei von Audio -Wiedergabe -Routine herausholen können. Es könnte sein, dass der Ladestil der Datei mit WAVs aufgrund der Dekodierungszeit tatsächlich schneller als das Komprimieren und den RAM verwendet wird.

Andere Tipps

Sie sollten die .wav -Dateien mit IMA4 -Komprimierung in CAF -Dateien (Kern -Audio -Format) komprimieren. Das iPhone kann mehrere dieser Dateien gleichzeitig abspielen (MP3/AAC kann nicht, da Sie den Hardware -Decoder benötigen).

Sie können WAV mit dem folgenden Terminalbefehl unter Mac OS X in CAF konvertieren:

$ afconvert -f caff -c 1 -d ima4 loop1.wav

Wenn Sie diese mit Avaudioplayer (AvFoundation) spielen, müssen Sie sich keine Sorgen um Caching machen, wie Avaudioplayer dies bereits tut. Für fortgeschrittene Audio müssen Sie jedoch nach Audio -Diensten (Audio -Warteschlangen) suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top