|
from pydantic import BaseModel |
|
import yaml |
|
|
|
|
|
class FrequencyConfig(BaseModel): |
|
min: int |
|
max: int |
|
n_bins: int |
|
|
|
|
|
class AcousticalConstantsConfig(BaseModel): |
|
sound_speed: float |
|
air_density: float |
|
atmospheric_pressure: int |
|
reference_pressure: float |
|
measurement_distance: float |
|
directivity_factor: int |
|
|
|
|
|
class Config(BaseModel): |
|
default_loudspeaker_cfg: str |
|
frequency: FrequencyConfig |
|
acoustical_constants: AcousticalConstantsConfig |
|
|
|
|
|
def load_config(yaml_path: str) -> Config: |
|
with open(yaml_path, "r") as file: |
|
data = yaml.safe_load(file) |
|
return Config(**data) |
|
|
|
|
|
class ElectricalConfig(BaseModel): |
|
input_voltage: float |
|
coil_resistance: float |
|
coil_inductance: float |
|
|
|
|
|
class MechanicalConfig(BaseModel): |
|
mass: float |
|
compliance: float |
|
resistance: float |
|
|
|
|
|
class AcousticalConfig(BaseModel): |
|
effective_diameter: float |
|
|
|
|
|
class LoudspeakerConfig(BaseModel): |
|
electrical: ElectricalConfig |
|
electromechanical_factor: float |
|
mechanical: MechanicalConfig |
|
acoustical: AcousticalConfig |
|
|
|
|
|
def load_loudspeaker_config(yaml_path: str) -> LoudspeakerConfig: |
|
with open(yaml_path, "r") as file: |
|
data = yaml.safe_load(file) |
|
return LoudspeakerConfig(**data) |
|
|