yoyolicoris commited on
Commit
523c68d
·
1 Parent(s): ce96faa

feat: simplify slider initialization by using partial functions for common parameters

Browse files
Files changed (1) hide show
  1. app.py +56 -154
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 = gr.Audio(
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 = gr.Slider(
383
- minimum=SLIDER_MIN,
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 = gr.Slider(
399
- minimum=SLIDER_MIN,
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 = gr.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 = gr.Audio(
430
- type="numpy", label="Output Audio", interactive=False, loop=True
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 = gr.Slider(
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 = gr.Slider(
464
- minimum=30,
465
- maximum=200,
466
- value=fx[2].params.freq.item(),
467
- interactive=True,
468
- label="Frequency (Hz)",
469
  )
470
- ls_gain = gr.Slider(
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 = gr.Slider(
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
- pk1_q = gr.Slider(
496
- minimum=0.2,
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 = gr.Slider(
506
- minimum=200,
507
- maximum=17500,
508
- value=fx[1].params.freq.item(),
509
- interactive=True,
510
- label="Frequency (Hz)",
511
  )
512
- pk2_gain = gr.Slider(
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 = gr.Slider(
531
- minimum=750,
532
- maximum=8300,
533
- value=fx[3].params.freq.item(),
534
- interactive=True,
535
- label="Frequency (Hz)",
536
  )
537
- hs_gain = gr.Slider(
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 = gr.Slider(
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=fx[6].params.cmp_th.item(),
570
  interactive=True,
571
- label="fx[6]. Threshold (dB)",
572
  )
573
  cmp_ratio = gr.Slider(
574
  minimum=1,
575
  maximum=20,
576
- value=fx[6].params.cmp_ratio.item(),
577
  interactive=True,
578
- label="fx[6]. Ratio",
579
  )
580
  make_up = gr.Slider(
581
  minimum=-12,
582
  maximum=12,
583
- value=fx[6].params.make_up.item(),
584
  interactive=True,
585
  label="Make Up (dB)",
586
  )
587
  attack_time = gr.Slider(
588
  minimum=0.1,
589
  maximum=100,
590
- value=coef2ms(fx[6].params.at, 44100).item(),
591
  interactive=True,
592
  label="Attack Time (ms)",
593
  )
594
  release_time = gr.Slider(
595
  minimum=50,
596
  maximum=1000,
597
- value=coef2ms(fx[6].params.rt, 44100).item(),
598
  interactive=True,
599
  label="Release Time (ms)",
600
  )
601
  exp_ratio = gr.Slider(
602
  minimum=0,
603
  maximum=1,
604
- value=fx[6].params.exp_ratio.item(),
605
  interactive=True,
606
  label="Exp. Ratio",
607
  )
608
  exp_th = gr.Slider(
609
  minimum=-80,
610
  maximum=0,
611
- value=fx[6].params.exp_th.item(),
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=fx[7].effects[0].params.delay.item(),
628
  interactive=True,
629
  label="Delay Time (ms)",
630
  )
631
  feedback = gr.Slider(
632
  minimum=0,
633
  maximum=1,
634
- value=fx[7].effects[0].params.feedback.item(),
635
  interactive=True,
636
  label="Feedback",
637
  )
638
  delay_gain = gr.Slider(
639
  minimum=-80,
640
  maximum=0,
641
- value=fx[7].effects[0].params.gain.log10().item() * 20,
642
  interactive=True,
643
  label="Gain (dB)",
644
  )
645
  odd_pan = gr.Slider(
646
  minimum=-100,
647
  maximum=100,
648
- value=fx[7].effects[0].odd_pan.params.pan.item() * 200 - 100,
649
  interactive=True,
650
  label="Odd Delay Pan",
651
  )
652
  even_pan = gr.Slider(
653
  minimum=-100,
654
  maximum=100,
655
- value=fx[7].effects[0].even_pan.params.pan.item() * 200 - 100,
656
  interactive=True,
657
  label="Even Delay Pan",
658
  )
659
  delay_lp_freq = gr.Slider(
660
  minimum=200,
661
  maximum=16000,
662
- value=fx[7].effects[0].eq.params.freq.item(),
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
  )