Spaces:
Running
Running
Commit
·
523c68d
1
Parent(s):
ce96faa
feat: simplify slider initialization by using partial functions for common parameters
Browse files
app.py
CHANGED
@@ -184,11 +184,6 @@ def model2json(fx):
|
|
184 |
},
|
185 |
"Cross Send (dB)": fx[7].params.sends_0.log10().mul(20).item(),
|
186 |
}
|
187 |
-
replace_neg_inf = lambda d: (
|
188 |
-
{k: (replace_neg_inf(v) if v != -np.inf else -1e500) for k, v in d.items()}
|
189 |
-
if isinstance(d, dict)
|
190 |
-
else d
|
191 |
-
)
|
192 |
return {
|
193 |
"Direct": results,
|
194 |
"Sends": spatial_fx,
|
@@ -350,6 +345,14 @@ with gr.Blocks() as demo:
|
|
350 |
fx_params = gr.State(mean)
|
351 |
fx = vec2fx(fx_params.value)
|
352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
gr.Markdown(
|
354 |
title_md,
|
355 |
elem_id="title",
|
@@ -363,9 +366,7 @@ with gr.Blocks() as demo:
|
|
363 |
|
364 |
with gr.Row():
|
365 |
with gr.Column():
|
366 |
-
audio_input =
|
367 |
-
type="numpy", sources="upload", label="Input Audio", loop=True
|
368 |
-
)
|
369 |
with gr.Row():
|
370 |
random_button = gr.Button(
|
371 |
f"Randomise PCs",
|
@@ -379,36 +380,12 @@ with gr.Blocks() as demo:
|
|
379 |
"Run", elem_id="render-button", variant="primary"
|
380 |
)
|
381 |
with gr.Row():
|
382 |
-
s1 =
|
383 |
-
|
384 |
-
maximum=SLIDER_MAX,
|
385 |
-
label="PC 1",
|
386 |
-
value=0,
|
387 |
-
interactive=True,
|
388 |
-
)
|
389 |
-
s2 = gr.Slider(
|
390 |
-
minimum=SLIDER_MIN,
|
391 |
-
maximum=SLIDER_MAX,
|
392 |
-
label="PC 2",
|
393 |
-
value=0,
|
394 |
-
interactive=True,
|
395 |
-
)
|
396 |
|
397 |
with gr.Row():
|
398 |
-
s3 =
|
399 |
-
|
400 |
-
maximum=SLIDER_MAX,
|
401 |
-
label="PC 3",
|
402 |
-
value=0,
|
403 |
-
interactive=True,
|
404 |
-
)
|
405 |
-
s4 = gr.Slider(
|
406 |
-
minimum=SLIDER_MIN,
|
407 |
-
maximum=SLIDER_MAX,
|
408 |
-
label="PC 4",
|
409 |
-
value=0,
|
410 |
-
interactive=True,
|
411 |
-
)
|
412 |
|
413 |
sliders = [s1, s2, s3, s4]
|
414 |
|
@@ -418,23 +395,12 @@ with gr.Blocks() as demo:
|
|
418 |
info="Select which extra PC to adjust",
|
419 |
interactive=True,
|
420 |
)
|
421 |
-
extra_slider =
|
422 |
-
minimum=SLIDER_MIN,
|
423 |
-
maximum=SLIDER_MAX,
|
424 |
-
label="Extra PC",
|
425 |
-
value=0,
|
426 |
-
)
|
427 |
|
428 |
with gr.Column():
|
429 |
-
audio_output =
|
430 |
-
|
431 |
-
)
|
432 |
-
direct_output = gr.Audio(
|
433 |
-
type="numpy", label="Direct Audio", interactive=False, loop=True
|
434 |
-
)
|
435 |
-
wet_output = gr.Audio(
|
436 |
-
type="numpy", label="Wet Audio", interactive=False, loop=True
|
437 |
-
)
|
438 |
|
439 |
_ = gr.Markdown("## Parametric EQ")
|
440 |
peq_plot = gr.Plot(plot_eq(fx), label="PEQ Frequency Response", elem_id="peq-plot")
|
@@ -442,122 +408,58 @@ with gr.Blocks() as demo:
|
|
442 |
with gr.Column(min_width=160):
|
443 |
_ = gr.Markdown("High Pass")
|
444 |
hp = fx[5]
|
445 |
-
hp_freq =
|
446 |
-
minimum=16,
|
447 |
-
maximum=5300,
|
448 |
-
value=fx[5].params.freq.item(),
|
449 |
-
interactive=True,
|
450 |
-
label="Frequency (Hz)",
|
451 |
-
)
|
452 |
-
hp_q = gr.Slider(
|
453 |
-
minimum=0.5,
|
454 |
-
maximum=10,
|
455 |
-
value=fx[5].params.Q.item(),
|
456 |
-
interactive=True,
|
457 |
-
label="Q",
|
458 |
)
|
|
|
459 |
|
460 |
with gr.Column(min_width=160):
|
461 |
_ = gr.Markdown("Low Shelf")
|
462 |
ls = fx[2]
|
463 |
-
ls_freq =
|
464 |
-
minimum=30,
|
465 |
-
maximum=200,
|
466 |
-
value=fx[2].params.freq.item(),
|
467 |
-
interactive=True,
|
468 |
-
label="Frequency (Hz)",
|
469 |
)
|
470 |
-
ls_gain =
|
471 |
-
minimum=-12,
|
472 |
-
maximum=12,
|
473 |
-
value=fx[2].params.gain.item(),
|
474 |
-
interactive=True,
|
475 |
-
label="Gain (dB)",
|
476 |
)
|
477 |
|
478 |
with gr.Column(min_width=160):
|
479 |
_ = gr.Markdown("Peak filter 1")
|
480 |
pk1 = fx[0]
|
481 |
-
pk1_freq =
|
482 |
-
minimum=33,
|
483 |
-
maximum=5400,
|
484 |
-
value=fx[0].params.freq.item(),
|
485 |
-
interactive=True,
|
486 |
-
label="Frequency (Hz)",
|
487 |
-
)
|
488 |
-
pk1_gain = gr.Slider(
|
489 |
-
minimum=-12,
|
490 |
-
maximum=12,
|
491 |
-
value=fx[0].params.gain.item(),
|
492 |
-
interactive=True,
|
493 |
-
label="Gain (dB)",
|
494 |
)
|
495 |
-
|
496 |
-
minimum=
|
497 |
-
maximum=20,
|
498 |
-
value=fx[0].params.Q.item(),
|
499 |
-
interactive=True,
|
500 |
-
label="Q",
|
501 |
)
|
|
|
502 |
with gr.Column(min_width=160):
|
503 |
_ = gr.Markdown("Peak filter 2")
|
504 |
pk2 = fx[1]
|
505 |
-
pk2_freq =
|
506 |
-
minimum=200,
|
507 |
-
maximum=17500,
|
508 |
-
value=fx[1].params.freq.item(),
|
509 |
-
interactive=True,
|
510 |
-
label="Frequency (Hz)",
|
511 |
)
|
512 |
-
pk2_gain =
|
513 |
-
minimum=-12,
|
514 |
-
maximum=12,
|
515 |
-
value=fx[1].params.gain.item(),
|
516 |
-
interactive=True,
|
517 |
-
label="Gain (dB)",
|
518 |
-
)
|
519 |
-
pk2_q = gr.Slider(
|
520 |
-
minimum=0.2,
|
521 |
-
maximum=20,
|
522 |
-
value=fx[1].params.Q.item(),
|
523 |
-
interactive=True,
|
524 |
-
label="Q",
|
525 |
)
|
|
|
526 |
|
527 |
with gr.Column(min_width=160):
|
528 |
_ = gr.Markdown("High Shelf")
|
529 |
hs = fx[3]
|
530 |
-
hs_freq =
|
531 |
-
minimum=750,
|
532 |
-
maximum=8300,
|
533 |
-
value=fx[3].params.freq.item(),
|
534 |
-
interactive=True,
|
535 |
-
label="Frequency (Hz)",
|
536 |
)
|
537 |
-
hs_gain =
|
538 |
-
minimum=-12,
|
539 |
-
maximum=12,
|
540 |
-
value=fx[3].params.gain.item(),
|
541 |
-
interactive=True,
|
542 |
-
label="Gain (dB)",
|
543 |
)
|
544 |
with gr.Column(min_width=160):
|
545 |
_ = gr.Markdown("Low Pass")
|
546 |
lp = fx[4]
|
547 |
-
lp_freq =
|
548 |
-
minimum=200,
|
549 |
-
maximum=18000,
|
550 |
-
value=fx[4].params.freq.item(),
|
551 |
-
interactive=True,
|
552 |
-
label="Frequency (Hz)",
|
553 |
-
)
|
554 |
-
lp_q = gr.Slider(
|
555 |
-
minimum=0.5,
|
556 |
-
maximum=10,
|
557 |
-
value=fx[4].params.Q.item(),
|
558 |
-
interactive=True,
|
559 |
-
label="Q",
|
560 |
)
|
|
|
561 |
|
562 |
_ = gr.Markdown("## Compressor and Expander")
|
563 |
with gr.Row():
|
@@ -566,49 +468,49 @@ with gr.Blocks() as demo:
|
|
566 |
cmp_th = gr.Slider(
|
567 |
minimum=-60,
|
568 |
maximum=0,
|
569 |
-
value=
|
570 |
interactive=True,
|
571 |
-
label="
|
572 |
)
|
573 |
cmp_ratio = gr.Slider(
|
574 |
minimum=1,
|
575 |
maximum=20,
|
576 |
-
value=
|
577 |
interactive=True,
|
578 |
-
label="
|
579 |
)
|
580 |
make_up = gr.Slider(
|
581 |
minimum=-12,
|
582 |
maximum=12,
|
583 |
-
value=
|
584 |
interactive=True,
|
585 |
label="Make Up (dB)",
|
586 |
)
|
587 |
attack_time = gr.Slider(
|
588 |
minimum=0.1,
|
589 |
maximum=100,
|
590 |
-
value=coef2ms(
|
591 |
interactive=True,
|
592 |
label="Attack Time (ms)",
|
593 |
)
|
594 |
release_time = gr.Slider(
|
595 |
minimum=50,
|
596 |
maximum=1000,
|
597 |
-
value=coef2ms(
|
598 |
interactive=True,
|
599 |
label="Release Time (ms)",
|
600 |
)
|
601 |
exp_ratio = gr.Slider(
|
602 |
minimum=0,
|
603 |
maximum=1,
|
604 |
-
value=
|
605 |
interactive=True,
|
606 |
label="Exp. Ratio",
|
607 |
)
|
608 |
exp_th = gr.Slider(
|
609 |
minimum=-80,
|
610 |
maximum=0,
|
611 |
-
value=
|
612 |
interactive=True,
|
613 |
label="Exp. Threshold (dB)",
|
614 |
)
|
@@ -624,42 +526,42 @@ with gr.Blocks() as demo:
|
|
624 |
delay_time = gr.Slider(
|
625 |
minimum=100,
|
626 |
maximum=1000,
|
627 |
-
value=
|
628 |
interactive=True,
|
629 |
label="Delay Time (ms)",
|
630 |
)
|
631 |
feedback = gr.Slider(
|
632 |
minimum=0,
|
633 |
maximum=1,
|
634 |
-
value=
|
635 |
interactive=True,
|
636 |
label="Feedback",
|
637 |
)
|
638 |
delay_gain = gr.Slider(
|
639 |
minimum=-80,
|
640 |
maximum=0,
|
641 |
-
value=
|
642 |
interactive=True,
|
643 |
label="Gain (dB)",
|
644 |
)
|
645 |
odd_pan = gr.Slider(
|
646 |
minimum=-100,
|
647 |
maximum=100,
|
648 |
-
value=
|
649 |
interactive=True,
|
650 |
label="Odd Delay Pan",
|
651 |
)
|
652 |
even_pan = gr.Slider(
|
653 |
minimum=-100,
|
654 |
maximum=100,
|
655 |
-
value=
|
656 |
interactive=True,
|
657 |
label="Even Delay Pan",
|
658 |
)
|
659 |
delay_lp_freq = gr.Slider(
|
660 |
minimum=200,
|
661 |
maximum=16000,
|
662 |
-
value=
|
663 |
interactive=True,
|
664 |
label="Low Pass Frequency (Hz)",
|
665 |
)
|
|
|
184 |
},
|
185 |
"Cross Send (dB)": fx[7].params.sends_0.log10().mul(20).item(),
|
186 |
}
|
|
|
|
|
|
|
|
|
|
|
187 |
return {
|
188 |
"Direct": results,
|
189 |
"Sends": spatial_fx,
|
|
|
345 |
fx_params = gr.State(mean)
|
346 |
fx = vec2fx(fx_params.value)
|
347 |
|
348 |
+
default_pc_slider = partial(
|
349 |
+
gr.Slider, minimum=SLIDER_MIN, maximum=SLIDER_MAX, interactive=True, value=0
|
350 |
+
)
|
351 |
+
default_audio_block = partial(gr.Audio, type="numpy", loop=True)
|
352 |
+
default_freq_slider = partial(gr.Slider, label="Frequency (Hz)", interactive=True)
|
353 |
+
default_gain_slider = partial(gr.Slider, label="Gain (dB)", interactive=True)
|
354 |
+
default_q_slider = partial(gr.Slider, label="Q", interactive=True)
|
355 |
+
|
356 |
gr.Markdown(
|
357 |
title_md,
|
358 |
elem_id="title",
|
|
|
366 |
|
367 |
with gr.Row():
|
368 |
with gr.Column():
|
369 |
+
audio_input = default_audio_block(sources="upload", label="Input Audio")
|
|
|
|
|
370 |
with gr.Row():
|
371 |
random_button = gr.Button(
|
372 |
f"Randomise PCs",
|
|
|
380 |
"Run", elem_id="render-button", variant="primary"
|
381 |
)
|
382 |
with gr.Row():
|
383 |
+
s1 = default_pc_slider(label="PC 1")
|
384 |
+
s2 = default_pc_slider(label="PC 2")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
|
386 |
with gr.Row():
|
387 |
+
s3 = default_pc_slider(label="PC 3")
|
388 |
+
s4 = default_pc_slider(label="PC 4")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
|
390 |
sliders = [s1, s2, s3, s4]
|
391 |
|
|
|
395 |
info="Select which extra PC to adjust",
|
396 |
interactive=True,
|
397 |
)
|
398 |
+
extra_slider = default_pc_slider(label="Extra PC")
|
|
|
|
|
|
|
|
|
|
|
399 |
|
400 |
with gr.Column():
|
401 |
+
audio_output = default_audio_block(label="Output Audio", interactive=False)
|
402 |
+
direct_output = default_audio_block(label="Direct Audio", interactive=False)
|
403 |
+
wet_output = default_audio_block(label="Wet Audio", interactive=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
|
405 |
_ = gr.Markdown("## Parametric EQ")
|
406 |
peq_plot = gr.Plot(plot_eq(fx), label="PEQ Frequency Response", elem_id="peq-plot")
|
|
|
408 |
with gr.Column(min_width=160):
|
409 |
_ = gr.Markdown("High Pass")
|
410 |
hp = fx[5]
|
411 |
+
hp_freq = default_freq_slider(
|
412 |
+
minimum=16, maximum=5300, value=hp.params.freq.item()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
)
|
414 |
+
hp_q = default_q_slider(minimum=0.5, maximum=10, value=hp.params.Q.item())
|
415 |
|
416 |
with gr.Column(min_width=160):
|
417 |
_ = gr.Markdown("Low Shelf")
|
418 |
ls = fx[2]
|
419 |
+
ls_freq = default_freq_slider(
|
420 |
+
minimum=30, maximum=200, value=ls.params.freq.item()
|
|
|
|
|
|
|
|
|
421 |
)
|
422 |
+
ls_gain = default_gain_slider(
|
423 |
+
minimum=-12, maximum=12, value=ls.params.gain.item()
|
|
|
|
|
|
|
|
|
424 |
)
|
425 |
|
426 |
with gr.Column(min_width=160):
|
427 |
_ = gr.Markdown("Peak filter 1")
|
428 |
pk1 = fx[0]
|
429 |
+
pk1_freq = default_freq_slider(
|
430 |
+
minimum=33, maximum=5400, value=pk1.params.freq.item()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
)
|
432 |
+
pk1_gain = default_gain_slider(
|
433 |
+
minimum=-12, maximum=12, value=pk1.params.gain.item()
|
|
|
|
|
|
|
|
|
434 |
)
|
435 |
+
pk1_q = default_q_slider(minimum=0.2, maximum=20, value=pk1.params.Q.item())
|
436 |
with gr.Column(min_width=160):
|
437 |
_ = gr.Markdown("Peak filter 2")
|
438 |
pk2 = fx[1]
|
439 |
+
pk2_freq = default_freq_slider(
|
440 |
+
minimum=200, maximum=17500, value=pk2.params.freq.item()
|
|
|
|
|
|
|
|
|
441 |
)
|
442 |
+
pk2_gain = default_gain_slider(
|
443 |
+
minimum=-12, maximum=12, value=pk2.params.gain.item()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
)
|
445 |
+
pk2_q = default_q_slider(minimum=0.2, maximum=20, value=pk2.params.Q.item())
|
446 |
|
447 |
with gr.Column(min_width=160):
|
448 |
_ = gr.Markdown("High Shelf")
|
449 |
hs = fx[3]
|
450 |
+
hs_freq = default_freq_slider(
|
451 |
+
minimum=750, maximum=8300, value=hs.params.freq.item()
|
|
|
|
|
|
|
|
|
452 |
)
|
453 |
+
hs_gain = default_gain_slider(
|
454 |
+
minimum=-12, maximum=12, value=hs.params.gain.item()
|
|
|
|
|
|
|
|
|
455 |
)
|
456 |
with gr.Column(min_width=160):
|
457 |
_ = gr.Markdown("Low Pass")
|
458 |
lp = fx[4]
|
459 |
+
lp_freq = default_freq_slider(
|
460 |
+
minimum=200, maximum=18000, value=lp.params.freq.item()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
461 |
)
|
462 |
+
lp_q = default_q_slider(minimum=0.5, maximum=10, value=lp.params.Q.item())
|
463 |
|
464 |
_ = gr.Markdown("## Compressor and Expander")
|
465 |
with gr.Row():
|
|
|
468 |
cmp_th = gr.Slider(
|
469 |
minimum=-60,
|
470 |
maximum=0,
|
471 |
+
value=comp.params.cmp_th.item(),
|
472 |
interactive=True,
|
473 |
+
label="Threshold (dB)",
|
474 |
)
|
475 |
cmp_ratio = gr.Slider(
|
476 |
minimum=1,
|
477 |
maximum=20,
|
478 |
+
value=comp.params.cmp_ratio.item(),
|
479 |
interactive=True,
|
480 |
+
label="Comp. Ratio",
|
481 |
)
|
482 |
make_up = gr.Slider(
|
483 |
minimum=-12,
|
484 |
maximum=12,
|
485 |
+
value=comp.params.make_up.item(),
|
486 |
interactive=True,
|
487 |
label="Make Up (dB)",
|
488 |
)
|
489 |
attack_time = gr.Slider(
|
490 |
minimum=0.1,
|
491 |
maximum=100,
|
492 |
+
value=coef2ms(comp.params.at, 44100).item(),
|
493 |
interactive=True,
|
494 |
label="Attack Time (ms)",
|
495 |
)
|
496 |
release_time = gr.Slider(
|
497 |
minimum=50,
|
498 |
maximum=1000,
|
499 |
+
value=coef2ms(comp.params.rt, 44100).item(),
|
500 |
interactive=True,
|
501 |
label="Release Time (ms)",
|
502 |
)
|
503 |
exp_ratio = gr.Slider(
|
504 |
minimum=0,
|
505 |
maximum=1,
|
506 |
+
value=comp.params.exp_ratio.item(),
|
507 |
interactive=True,
|
508 |
label="Exp. Ratio",
|
509 |
)
|
510 |
exp_th = gr.Slider(
|
511 |
minimum=-80,
|
512 |
maximum=0,
|
513 |
+
value=comp.params.exp_th.item(),
|
514 |
interactive=True,
|
515 |
label="Exp. Threshold (dB)",
|
516 |
)
|
|
|
526 |
delay_time = gr.Slider(
|
527 |
minimum=100,
|
528 |
maximum=1000,
|
529 |
+
value=delay.params.delay.item(),
|
530 |
interactive=True,
|
531 |
label="Delay Time (ms)",
|
532 |
)
|
533 |
feedback = gr.Slider(
|
534 |
minimum=0,
|
535 |
maximum=1,
|
536 |
+
value=delay.params.feedback.item(),
|
537 |
interactive=True,
|
538 |
label="Feedback",
|
539 |
)
|
540 |
delay_gain = gr.Slider(
|
541 |
minimum=-80,
|
542 |
maximum=0,
|
543 |
+
value=delay.params.gain.log10().item() * 20,
|
544 |
interactive=True,
|
545 |
label="Gain (dB)",
|
546 |
)
|
547 |
odd_pan = gr.Slider(
|
548 |
minimum=-100,
|
549 |
maximum=100,
|
550 |
+
value=delay.odd_pan.params.pan.item() * 200 - 100,
|
551 |
interactive=True,
|
552 |
label="Odd Delay Pan",
|
553 |
)
|
554 |
even_pan = gr.Slider(
|
555 |
minimum=-100,
|
556 |
maximum=100,
|
557 |
+
value=delay.even_pan.params.pan.item() * 200 - 100,
|
558 |
interactive=True,
|
559 |
label="Even Delay Pan",
|
560 |
)
|
561 |
delay_lp_freq = gr.Slider(
|
562 |
minimum=200,
|
563 |
maximum=16000,
|
564 |
+
value=delay.eq.params.freq.item(),
|
565 |
interactive=True,
|
566 |
label="Low Pass Frequency (Hz)",
|
567 |
)
|