Herausfinden der Latenzzeit des Audiosystems
(EN google-translate)
(PL google-translate)
Jedes digitale Signalverarbeitungssystem besitzt eine gewisse Verzögerungszeit, zwischen einem am Eingang anliegenden Signal und dem gleichen Signal, wenn es wieder am Ausgang ausgegeben wird. Für TAPE ECHO war es essentiell diese Zeit zu ermitteln, da nur so zeitlich korrekt einsetzende zweite und dritte Stimmen generiert werden konnten.
Lösung
|
package info.kramann.tapeecho; ... import info.kramann.tapeecho.Mikrofon; ... public class TapeEcho extends Zwischenschicht { public Mikrofon mikrofon; ... public void initialisieren() { ... mikrofon = new Mikrofon(this); ... //kurz anschalten, um Buffersize und Latenz zu ermitteln latenz = System.currentTimeMillis(); mikrofon.start(); ... } .. public void onAudioEvent(short[] _data) { data= _data; if(buffakt==0) { latenz = System.currentTimeMillis() - latenz; latenz_samp = (latenz*(long)sr)/1000; buffakt = data.length; outdata = new short[buffakt*2]; outdatasize = outdata.length; audioTrack.play(); mikrofon.stop(); ... } } ... }
Code 0-1: Für die Bestimmung der Latenzzeit relevanter Quellcode in info.kramann.tapeecho.TapeEcho.