Comment imiter Vinyle effet Scratch Audio Processing Stack Overflow

Qu'arrive-t-quand je raye (déplacer la piste vers l'avant)? Est-ce que je lève le pas et / ou le taux de l'échantillon?

Pensez à ce qui se passe réellement: Un enregistrement contient des données audio. L'aiguille d'enregistrement lit les données audio de l'enregistrement. Comme le disque tourne, la position de lecture change. (Il est très similaire à regarder le mouvement à travers un fichier tête de lecture audio dans un éditeur audio numérique.)







Les enregistrements ne peuvent modifier la lecture audio en accélérant ou en ralentissant l'enregistrement physique, ces effets à la fois tangage et vitesse de lecture ensemble. Certains logiciels audio peut changer le pas et évaluer de façon indépendante. Tourne-disques ne peuvent pas.

(Obtenez un joueur record et expérimenter pour entendre ce que cela ressemble.)

Comment puis-je imiter ce phénomène avec des algorithmes de traitement audio?

Pour émuler un DJ gratter un disque, vous devez être en mesure de régler la vitesse de lecture de l'audio que l'utilisateur est « grattent ».

Lorsque l'utilisateur accélère l'enregistrement, accélérer la vitesse de lecture. Lorsque l'utilisateur ralentit l'enregistrement, ralentir la vitesse de lecture.

Lorsque l'utilisateur arrête l'enregistrement, arrêtez la lecture tout à fait.







Lorsque l'utilisateur tourne le disque en sens inverse, inverser la lecture.

Vous n'avez pas besoin de changer la hauteur de l'audio. Modification de la vitesse de lecture le fera automatiquement. Tous les autres ajustements à la hauteur sonneront incorrect.

Je n'ai pas des conseils en ce qui concerne les bibliothèques, mais quelque chose comme ça est pas trop difficile à mettre en œuvre si vous prenez votre temps.

Lorsque vous grattez, vous êtes juste déplacer le disque avant et en arrière sous l'aiguille. Il est donc équivalent à une boucle vers l'avant et vers l'arrière à plusieurs reprises sur la même partie du fichier audio. Je suppose que la vitesse est quelque part entre une onde sinusoïdale et une onde triangulaire. Vous aurez besoin de faire une interpolation linéaire sur l'échantillon.

Pour une application mobile, je commencerais par la cartographie d'un axe de l'écran pour une plage horaire dans le fichier audio. Gardez un tampon contenant le dernier MotionEvent. Lorsque la prochaine MotionEvent arrive, calculer les positions de début et de fin mappées sur la base du (X, Y). Ensuite, calculer le temps écoulé entre les deux MotionEvents. Cela vous donne suffisamment d'informations pour jouer à partir du fichier à la bonne position et la vitesse, la mise à jour en permanence à chaque événement de mouvement.

Vous devrez peut-être faire une sorte de lissage sur les données, mais cela est un point de départ.

Un resampler à taux variable pourrait être approprié. Cela permettra d'accélérer le taux de jeu et augmenter le pas par le même rapport.

On pourrait suivre le rapport entre la vitesse angulaire du mouvement de « zéro » et le taux normal de rotation du plateau, et l'utiliser en tant que rapport de rééchantillonnage local.

Il y a beaucoup mieux (meilleure qualité audio) méthodes DSP de faire ré-échantillonnant que l'interpolation linéaire, comme l'utilisation d'une largeur variable noyau sinc d'interpolation.

Ta Réponse







Articles Liés