#pragma once namespace fluidsim::port { struct AudioFrame { float left{}, right{}; }; struct Vec3 { float x{}, y{}, z{}; bool operator==(const Vec3&) const = default; }; struct AudioListener { Vec3 position{}, right{1,0,0}; }; // Simple flow-derivative source used by the Helmholtz and pulse scenarios. class SoundProcessor { public: float gain{0.005f}; explicit SoundProcessor(int sample_rate = 44100, float listener_distance = 1.0f); float process(float mass_flow_out); private: float dt_{}, scale_factor_{}, previous_flow_{}; }; } // namespace fluidsim::port