75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
# Copyright 2025 XMOS LIMITED.
|
|
# This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
|
"""Test reverb pipeline creation."""
|
|
|
|
from audio_dsp.design.parse_json import DspJson, make_pipeline, pipeline_to_dspjson
|
|
|
|
|
|
def test_plate_reverb_pipeline():
|
|
"""Test creating a plate reverb pipeline."""
|
|
print("Creating plate reverb pipeline...")
|
|
|
|
# Create a plate reverb pipeline JSON
|
|
pipeline_json = {
|
|
"ir_version": 1,
|
|
"producer_name": "test_reverb",
|
|
"producer_version": "0.1",
|
|
"graph": {
|
|
"name": "Plate Reverb",
|
|
"fs": 48000,
|
|
"nodes": [
|
|
{
|
|
"op_type": "ReverbPlateStereo",
|
|
"config": {
|
|
"max_predelay": 30.0
|
|
},
|
|
"parameters": {
|
|
"predelay": 15.0,
|
|
"width": 0.8,
|
|
"damping": 0.4,
|
|
"decay": 0.6,
|
|
"early_diffusion": 0.7,
|
|
"late_diffusion": 0.6,
|
|
"bandwidth": 0.9,
|
|
"wet_dry_mix": 0.4
|
|
},
|
|
"placement": {
|
|
"input": [["inputs", 0], ["inputs", 1]],
|
|
"name": "StereoPlateReverb",
|
|
"thread": 0
|
|
}
|
|
}
|
|
],
|
|
"inputs": [
|
|
{
|
|
"name": "inputs",
|
|
"channels": 2
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "outputs",
|
|
"input": [["StereoPlateReverb", 0], ["StereoPlateReverb", 1]]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
dsp_json = DspJson(**pipeline_json)
|
|
pipeline = make_pipeline(dsp_json)
|
|
|
|
# Find our reverb stage
|
|
reverb_stage = None
|
|
for stage in pipeline.stages:
|
|
if stage.name == "reverb_plate":
|
|
reverb_stage = stage
|
|
break
|
|
|
|
assert reverb_stage is not None, "Could not find Plate Reverb stage in pipeline"
|
|
|
|
new_json = pipeline_to_dspjson(pipeline)
|
|
assert dsp_json.graph == new_json.graph, "Pipeline JSON does not match original"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_plate_reverb_pipeline() |