Wie Vinyl Scratch-Effekt in Audio Processing Stack-Überlauf emulieren
Was passiert, wenn ich kratzen (die Strecke vorwärts bewegen)? Muss ich die Tonhöhe und / oder die Geschwindigkeit der Probe erhöhen?
Überlegen Sie, was tatsächlich geschieht: Eine Aufzeichnung von Audiodaten enthält. Die Aufzeichnung Nadel liest die Audiodaten von der Platte. Da die Aufzeichnung dreht, ändert sich die Wiedergabeposition. (Es ist sehr ähnlich die Abspielposition bewegen sich durch eine Audiodatei in einem digitalen Audio-Editor zu beobachten.)
Datensätze können nur durch die Beschleunigung oder Verlangsamung des physischen Satz, diese Effekte sowohl Tonhöhe und Abspielgeschwindigkeit zusammen, um die Audiowiedergabe ändern. Einige Audio-Software kann die Tonhöhe und unabhängig bewerten. Plattenspieler nicht.
(Holen Sie sich einen Plattenspieler und experimentieren, um zu hören, was es klingt.)
Wie kann ich diese Phänomene mit Audio-Verarbeitungsalgorithmen emulieren?
Emuliert einen DJ Kratzen eine Aufzeichnung Sie müssen in der Lage, die Wiedergabegeschwindigkeit des Audio einzustellen, wie der Benutzer „kratzen“.
Wenn der Benutzer die Aufzeichnung beschleunigt, beschleunigt die Wiedergabegeschwindigkeit auf. Wenn der Benutzer die Aufzeichnung verlangsamt, verlangsamt die Wiedergabegeschwindigkeit.
Wenn der Benutzer die Aufzeichnung stoppt, stoppen gänzlich abspielen.
Wenn der Benutzer den Datensatz in umgekehrter Richtung dreht, kehren Sie die Wiedergabe.
Sie brauchen nicht auf die Tonhöhe des Audiomaterials zu ändern. die Wiedergabegeschwindigkeit ändern, wird das automatisch tun. Darüber hinausgehende Anpassungen der Tonhöhe klingt falsch.
Ich habe keine Ratschläge in Bezug auf Bibliotheken, aber so etwas wie dies nicht zu schwierig zu implementieren, wenn Sie Ihre Zeit in Anspruch nehmen.
Wenn Sie kratzen, sich bewegen Sie einfach den Datensatz hin und her unter die Nadel. So ist es gleichwertig vorwärts und rückwärts wiederholt über den gleichen Teil der Audiodatei Looping. Ich würde vermuten, dass die Geschwindigkeit irgendwo zwischen einer Sinuswelle und einer Dreieckswelle. Sie müssen eine lineare Interpolation auf die Probe zu tun.
Für eine mobile App, würde ich durch die Abbildung einer Achse des Bildschirms zu einem Zeitbereich in der Audiodatei starten. Halten Sie einen Puffer, um die letzte Motion enthält. Wenn die nächste Motion ankommt, berechnen die kartiert Start- und Endpositionen auf der Grundlage der (X, Y) -Koordinaten. Dann berechnet die verstrichene Zeit zwischen den beiden MotionEvents. Dies gibt Ihnen genügend Informationen aus der Datei in der richtigen Position und Geschwindigkeit zu spielen, ständig mit jedem Bewegungsereignis zu aktualisieren.
Möglicherweise müssen Sie eine Art der Glättung auf den Daten zu tun, aber das ist ein Ausgangspunkt.
Eine Variable Rate Neuabtasters könnte angemessen sein. Dadurch wird die Wiedergaberate und erhöhen die Tonhöhe im gleichen Verhältnis beschleunigen.
Sie würden Verhältnis zwischen der Winkelgeschwindigkeit der „scratch“ -Bewegung und der normalen Rate von plattem Laufe Spur, und verwenden, die als lokales Resampling-Verhältnis.
Es gibt viel besser (höhere Audioqualität) DSP Methoden des Tuns Rateresampling als lineare Interpolation, wie die Verwendung einer variablen Breite Sinc Interpolationskerns.