Perceptual K-nn

Perceptual-kNN

The objective

The goal of this project is to design an algorithm that, based on the physical parameters of a percussion synthesizer, can generate new parameters that lead to a sound close to the reference sound as perceived by humans. This work follows on from the study by Han Han, Vincent Lostalen, and Mathieu Lagrange [1], which aimed to reverse the synthesizer's path: starting with a sound, find the physical parameters that allow it to be reproduced. A solution based on a neural network can only produce a single set of parameters for a given sound, which is the driving force behind this project: to overcome this limitation. We use the same physical percussion sound model synthesizer employed by these authors [2].

[1] Han Han, Vincent Lostanlen et Mathieu Lagrange. Perceptual-Neural-Physical Sound Matching. 2023. arXiv : 2301.02886 [cs.SD]. url : https://arxiv.org/abs/2301.02886.
[2] Han Han et Vincent Lostanlen. Perceptual Neural Physical Sound Matching. https://github.com/lylyhan/perceptual_neural_physical. 2023.

Table of content

Efficiency of the riemannian distance approximation in nearest neighbors finding

Finding the perceptual neighbors of sound generated from a drum synthesizer, using different methods to approximate the distance in the perceptual domain.

Audio result

Several sets of parameters have been chosen to test the three methods ( P-LOSS, PNP and Bruteforce ) with 10 subdivisions per parameters.
For each set of parameters it is possible to listen to the results given by every method.

Path between two nodes

Exemple 1

Starting node Target node

Reference graph :

Cumulative distance for path in the reference graph

KnnG_Nhubs500_K27 graph :

Cumulative distance for path in PNP graph (K=27)

KnnG_Nhubs500_K35 graph :

Cumulative distance for path in PNP graph (K=35)

KnnG_Nhubs500_K48 graph :

Cumulative distance for path in PNP graph (K=48)

Exemple 2

Starting node Target node

Reference graph :

Cumulative distance for path in the reference graph

KnnG_Nhubs500_K27 graph :

Cumulative distance for path in PNP graph (K=27)

KnnG_Nhubs500_K35 graph :

Cumulative distance for path in PNP graph (K=35)

KnnG_Nhubs500_K48 graph :

Cumulative distance for path in PNP graph (K=48)

Exemple 3

Starting node Target node

Reference graph :

Cumulative distance for path in the reference graph

KnnG_Nhubs500_K27 graph :

Cumulative distance for path in PNP graph (K=27)

KnnG_Nhubs500_K35 graph :

Cumulative distance for path in PNP graph (K=35)

KnnG_Nhubs500_K48 graph :

Cumulative distance for path in PNP graph (K=48)

Random Path

Exemple 1

Starting node

Reference graph :

Graph generated by a random walk in the reference graph

KnnG_Nhubs500_K27 graph :

Graph generated by a random walk in the graph PNP (K = 27)

KnnG_Nhubs500_K35 graph :

Graph generated by a random walk in the graph PNP (K = 35)

Exemple 2

Starting node

Reference graph :

Graph generated by a random walk in the reference graph

KnnG_Nhubs500_K27 graph :

Graph generated by a random walk in the graph PNP (K = 27)

KnnG_Nhubs500_K35 graph :

Graph generated by a random walk in the graph PNP (K = 35)

Exemple 3

Starting node

Reference graph :

Graph generated by a random walk in the reference graph

KnnG_Nhubs500_K27 graph :

Graph generated by a random walk in the graph PNP (K = 27)

KnnG_Nhubs500_K35 graph :

Graph generated by a random walk in the graph PNP (K = 35)