Even een korte introductie: ik heb een DSP algoritme geschreven dat realtime audio achteruit afspeelt, een reverse delay / sampler idee. Het algoritme werkt voor verschillende bufferlengtes (instelbaar), van één-tiende tot tien seconden. Op dit moment heb ik het algoritme volledig werkend en ik denk dat het vanuit technisch oogpunt correct geïmplementeerd is.
Het probleem is echter dat ik bij korte buffertijden hoorbare clipping / statische tikjes krijg op het moment dat een buffer is doorlopen. Dit begint ongeveer bij buffertijd kleiner dan 160 ms (frequentie van 6 Hz) en is beter hoorbaar bij zachte, afstervende passages in de inkomende audio.
Ik denk dat het probleem als volgt is, stel dat de inkomende audio-samples er als volgt uitzien:
En mijn buffertijd is vier samples (voorbeeld op kleine schaal), dan wordt als "audio uit" het volgende gegenereerd:
Ik denk dat de hoorbare clipping op dat moment wordt veroorzaakt door de overgang van sample met waarde 8 naar sample met waarde 1.
Mijn vraag is nu hoe ik dit het beste kan opvangen en hoe ik mijn samples moet combineren om de tikjes onhoorbaar te maken. Ik heb al geprobeerd om de samples op bufferscheidingen op te tellen en te delen door twee, maar dat maakt het tikken niet hoorbaar minder erg.
Ik hoop dat iemand kan aangeven welke techniek ik kan toepassen om de samples rond de bufferscheiding te combineren / bewerken voor een beter resultaat.
Het probleem is echter dat ik bij korte buffertijden hoorbare clipping / statische tikjes krijg op het moment dat een buffer is doorlopen. Dit begint ongeveer bij buffertijd kleiner dan 160 ms (frequentie van 6 Hz) en is beter hoorbaar bij zachte, afstervende passages in de inkomende audio.
Ik denk dat het probleem als volgt is, stel dat de inkomende audio-samples er als volgt uitzien:
code:
1
| 8 7 6 5 4 3 2 1 |
En mijn buffertijd is vier samples (voorbeeld op kleine schaal), dan wordt als "audio uit" het volgende gegenereerd:
code:
1
| 5 6 7 8 1 2 3 4 |
Ik denk dat de hoorbare clipping op dat moment wordt veroorzaakt door de overgang van sample met waarde 8 naar sample met waarde 1.
Mijn vraag is nu hoe ik dit het beste kan opvangen en hoe ik mijn samples moet combineren om de tikjes onhoorbaar te maken. Ik heb al geprobeerd om de samples op bufferscheidingen op te tellen en te delen door twee, maar dat maakt het tikken niet hoorbaar minder erg.
Ik hoop dat iemand kan aangeven welke techniek ik kan toepassen om de samples rond de bufferscheiding te combineren / bewerken voor een beter resultaat.
Remember, if you have any trouble you can always send a telegram to the Right People.