Hey alle, ich habe eine Methode der Aufzeichnung, die die Notizen schreibt, die ein Benutzer zu einem Array in Echtzeit spielt. Das einzige Problem ist, dass es eine leichte Verzögerung gibt und jede Sequenz bei der Wiedergabe merklich verlangsamt wird. Ich habe die Wiedergabegeschwindigkeit um etwa 6 Millisekunden erhöht, und es klingt richtig, aber ich habe mich gefragt, ob die Verzögerung auf anderen Geräten variieren könnte?iOS - Speed Issues
Ich habe auf einem iPod Touch 2. Generation getestet, wie würde diese Preform auf 3. und 4. sowie iPhones? muss ich an allen testen und die optimale Verzögerungsvariation finden?
Irgendwelche Ideen?
Mehr Infos: ich zwei NSThreads statt Timer und füllen ein Array mit leeren Stellen, an denen keine Noten gespielt werden sollten (ich verwende ganze Zahlen, -1 ist ein freier Raum). Alle 0,03 Sekunden fügt es bei der Aufnahme ein Leerzeichen hinzu. Jedes Mal, wenn der Benutzer eine Notiz trifft, wird das letzte Leerzeichen durch eine Zahl zwischen 0 und 7 ersetzt. Bei der Wiedergabe wird der zweite Thread verwendet (2 Threads, da der zweite ein kürzeres Zeitintervall hat), der eine Zeit von 0,024 hat. Die Differenz von 6 Millisekunden kompensiert die Verzögerung zwischen Aufnahme und Wiedergabe.
Ich nehme an, dass entweder die Aufnahme oder das Abspielen von Noten länger dauert als die andere und somit die Verzögerung entsteht.
Was ich wissen möchte ist, wenn die Verzögerung auf anderen Geräten anders sein wird, und wie ich es kompensieren sollte.
exakte Lösung
ich nicht habe es vollständig erklärt, das ist, warum diese Lösung nicht zur Verfügung gestellt wurde, sondern für jedermann mit einem ähnlichen Problem ...
Ich spielte jeden schlagen ähnlich auf eine MIDI-Datei wie folgt:
while playing:
do stuff to play beat
new date xyz seconds from now
new date now
while now is not > date xyz seconds from now wait.
die offensichtliche Sache, die ich war zu erstellen, um die zwei Tage, bevor die Wiedergabe des Beats fehlt ...
D'OH!
„Hey all, habe ich ein Verfahren zum Aufzeichnen bekam, die die Noten schreibt, dass ein Benutzer auf ein Array spielt in Echtzeit." Du wirst das ein bisschen deutlicher erklären müssen. –
Entschuldigung, der Hauptpunkt war, dass ich wissen möchte, ob die Verzögerung auf mehreren Geräten unterschiedlich sein wird. Ich werde jetzt ein paar Infos reinstecken. –
Welchen Mechanismus verwenden Sie, um Ihre "Alle 0,03 Sekunden" zu generieren? Sie sagen, es ist kein Timer, also wie stellen Sie fest, dass die entsprechende Zeit verstrichen ist (Spin-Loop überprüft die Uhr?) –