Spaces:
Running
Running
Commit
·
15fe46b
1
Parent(s):
eebf84c
Add detailed documentation for Random Vocal Effects Generator
Browse files
app.py
CHANGED
@@ -12,6 +12,32 @@ from functools import partial
|
|
12 |
from modules.utils import chain_functions, vec2statedict, get_chunks
|
13 |
from modules.fx import clip_delay_eq_Q
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
SLIDER_MAX = 3
|
16 |
SLIDER_MIN = -3
|
17 |
NUMBER_OF_PCS = 10
|
@@ -116,14 +142,11 @@ def get_important_pcs(n=10, **kwargs):
|
|
116 |
|
117 |
|
118 |
with gr.Blocks() as demo:
|
119 |
-
gr.Markdown(
|
120 |
-
"""
|
121 |
-
# Hadamard Transform
|
122 |
-
This is a demo of the Hadamard transform.
|
123 |
-
"""
|
124 |
-
)
|
125 |
with gr.Row():
|
126 |
with gr.Column():
|
|
|
|
|
|
|
127 |
audio_input = gr.Audio(type="numpy", sources="upload", label="Input Audio")
|
128 |
with gr.Row():
|
129 |
random_button = gr.Button(
|
|
|
12 |
from modules.utils import chain_functions, vec2statedict, get_chunks
|
13 |
from modules.fx import clip_delay_eq_Q
|
14 |
|
15 |
+
|
16 |
+
space_md = """
|
17 |
+
# Random Vocal Effects Generator
|
18 |
+
|
19 |
+
This is a demo of the paper [DiffVox: A Differentiable Model for Capturing and Analysing Professional Effects Distributions](https://arxiv.org/abs/2504.14735), accepted at DAFx 2025.
|
20 |
+
In this demo, you can upload a raw vocal audio file and apply random effects to make it sound better!
|
21 |
+
|
22 |
+
The effects consist of series of EQ, compressor, delay, and reverb.
|
23 |
+
The generator is a PCA model derived from 365 vocal effects presets fitted with the same effects chain.
|
24 |
+
This interface allows you to control the first 10 principal components (PCs) of the generator, randomise them, and render the audio.
|
25 |
+
For the rest of the PCs, you can choose to randomise them or set them to zero.
|
26 |
+
|
27 |
+
To give you some idea, we emperically found that the first PC controls the amount of reverb and the second PC controls the amount of brightness.
|
28 |
+
Note that adding these PCs together does not necessarily mean that their effects are additive in the final audio.
|
29 |
+
We found sometimes the effects of least important PCs are more perceptible.
|
30 |
+
Try to play around with the sliders and buttons and see what you can come up with!
|
31 |
+
|
32 |
+
Currently only a portion of PCs are tweakable, but in the future we will add more controls and visualisation tools.
|
33 |
+
For example:
|
34 |
+
- Exposing all the PCs
|
35 |
+
- Directly controlling the parameters of the effects
|
36 |
+
- Visualising the PCA space
|
37 |
+
- Visualising the frequency responses/dynamic curves of the effects
|
38 |
+
- Exporting the effects settings as JSON files
|
39 |
+
"""
|
40 |
+
|
41 |
SLIDER_MAX = 3
|
42 |
SLIDER_MIN = -3
|
43 |
NUMBER_OF_PCS = 10
|
|
|
142 |
|
143 |
|
144 |
with gr.Blocks() as demo:
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
with gr.Row():
|
146 |
with gr.Column():
|
147 |
+
gr.Markdown(
|
148 |
+
space_md,
|
149 |
+
)
|
150 |
audio_input = gr.Audio(type="numpy", sources="upload", label="Input Audio")
|
151 |
with gr.Row():
|
152 |
random_button = gr.Button(
|