# {py:mod}`simvx.core._native.miniaudio_engine` ```{py:module} simvx.core._native.miniaudio_engine ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`Engine ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine :summary: ``` * - {py:obj}`SoundGroup ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup :summary: ``` * - {py:obj}`AudioBuffer ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer :summary: ``` * - {py:obj}`StreamSource ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource :summary: ``` * - {py:obj}`Sound ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound :summary: ``` * - {py:obj}`EffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode :summary: ``` * - {py:obj}`LPFEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LPFEffectNode :summary: ``` * - {py:obj}`HPFEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HPFEffectNode :summary: ``` * - {py:obj}`BPFEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.BPFEffectNode :summary: ``` * - {py:obj}`NotchEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.NotchEffectNode :summary: ``` * - {py:obj}`PeakEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.PeakEffectNode :summary: ``` * - {py:obj}`LowShelfEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LowShelfEffectNode :summary: ``` * - {py:obj}`HighShelfEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HighShelfEffectNode :summary: ``` * - {py:obj}`DelayEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode :summary: ``` * - {py:obj}`SoftClipEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoftClipEffectNode :summary: ``` * - {py:obj}`CompressorEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.CompressorEffectNode :summary: ``` * - {py:obj}`FreeverbEffectNode ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.FreeverbEffectNode :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`is_available ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.is_available :summary: ``` * - {py:obj}`refresh ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.refresh :summary: ``` * - {py:obj}`ma_result_message ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.ma_result_message :summary: ``` * - {py:obj}`engine_endpoint ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.engine_endpoint :summary: ``` * - {py:obj}`sound_group_as_node ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.sound_group_as_node :summary: ``` * - {py:obj}`attach_node ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.attach_node :summary: ``` * - {py:obj}`detach_node ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.detach_node :summary: ``` * - {py:obj}`set_node_output_volume ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.set_node_output_volume :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`log ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.log :summary: ``` * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.__all__ :summary: ``` ```` ### API ````{py:data} log :canonical: simvx.core._native.miniaudio_engine.log :value: > 'getLogger(...)' ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.log ``` ```` ````{py:data} __all__ :canonical: simvx.core._native.miniaudio_engine.__all__ :value: > ['MiniaudioEngineUnavailable', 'Engine', 'Sound', 'SoundGroup', 'AudioBuffer', 'StreamSource', 'Effe... ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.__all__ ``` ```` `````{py:exception} MiniaudioEngineUnavailable() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable Bases: {py:obj}`RuntimeError` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__init__ ``` ```{py:class} __cause__ :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__cause__ ``` ```{py:class} __context__ :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__context__ ``` ````{py:method} __delattr__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__delattr__ ```` ````{py:method} __dir__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__dir__ ```` ````{py:method} __eq__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__eq__ ```` ````{py:method} __format__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__format__ ```` ````{py:method} __ge__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__ge__ ```` ````{py:method} __getattribute__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__getattribute__ ```` ````{py:method} __getstate__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__getstate__ ```` ````{py:method} __gt__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__gt__ ```` ````{py:method} __hash__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__hash__ ```` ````{py:method} __le__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__le__ ```` ````{py:method} __lt__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__lt__ ```` ````{py:method} __ne__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__ne__ ```` ````{py:method} __new__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__new__ ```` ````{py:method} __reduce__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__reduce__ ```` ````{py:method} __reduce_ex__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__reduce_ex__ ```` ````{py:method} __repr__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__repr__ ```` ````{py:method} __setattr__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__setattr__ ```` ````{py:method} __setstate__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__setstate__ ```` ````{py:method} __sizeof__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__sizeof__ ```` ````{py:method} __str__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__str__ ```` ````{py:method} __subclasshook__() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__subclasshook__ ```` ```{py:class} __suppress_context__ :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__suppress_context__ ``` ```{py:class} __traceback__ :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.__traceback__ ``` ````{py:method} add_note() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.add_note ```` ```{py:class} args :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.args ``` ````{py:method} with_traceback() :canonical: simvx.core._native.miniaudio_engine.MiniaudioEngineUnavailable.with_traceback ```` ````` ````{py:function} is_available() -> bool :canonical: simvx.core._native.miniaudio_engine.is_available ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.is_available ``` ```` ````{py:function} refresh() -> bool :canonical: simvx.core._native.miniaudio_engine.refresh ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.refresh ``` ```` ````{py:function} ma_result_message(code: int) -> str :canonical: simvx.core._native.miniaudio_engine.ma_result_message ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.ma_result_message ``` ```` `````{py:class} Engine(*, sample_rate: int = 48000, channels: int = 2, device: bool = True) :canonical: simvx.core._native.miniaudio_engine.Engine ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.Engine.handle :type: typing.Any ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.handle ``` ```` ````{py:property} sample_rate :canonical: simvx.core._native.miniaudio_engine.Engine.sample_rate :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.sample_rate ``` ```` ````{py:property} channels :canonical: simvx.core._native.miniaudio_engine.Engine.channels :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.channels ``` ```` ````{py:method} set_volume(linear_gain: float) -> None :canonical: simvx.core._native.miniaudio_engine.Engine.set_volume ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.set_volume ``` ```` ````{py:method} set_listener_position(x: float, y: float, z: float, *, idx: int = 0) -> None :canonical: simvx.core._native.miniaudio_engine.Engine.set_listener_position ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.set_listener_position ``` ```` ````{py:method} set_listener_velocity(x: float, y: float, z: float, *, idx: int = 0) -> None :canonical: simvx.core._native.miniaudio_engine.Engine.set_listener_velocity ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.set_listener_velocity ``` ```` ````{py:method} set_listener_direction(x: float, y: float, z: float, *, idx: int = 0) -> None :canonical: simvx.core._native.miniaudio_engine.Engine.set_listener_direction ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.set_listener_direction ``` ```` ````{py:method} set_listener_world_up(x: float, y: float, z: float, *, idx: int = 0) -> None :canonical: simvx.core._native.miniaudio_engine.Engine.set_listener_world_up ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.set_listener_world_up ``` ```` ````{py:method} read_pcm_frames(frame_count: int) -> numpy.ndarray :canonical: simvx.core._native.miniaudio_engine.Engine.read_pcm_frames ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.read_pcm_frames ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.Engine.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.Engine.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Engine.__del__ ``` ```` ````` `````{py:class} SoundGroup(engine: simvx.core._native.miniaudio_engine.Engine, *, parent: simvx.core._native.miniaudio_engine.SoundGroup | None = None) :canonical: simvx.core._native.miniaudio_engine.SoundGroup ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.SoundGroup.handle :type: typing.Any ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup.handle ``` ```` ````{py:method} set_volume(linear_gain: float) -> None :canonical: simvx.core._native.miniaudio_engine.SoundGroup.set_volume ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup.set_volume ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.SoundGroup.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.SoundGroup.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoundGroup.__del__ ``` ```` ````` `````{py:class} AudioBuffer(samples: numpy.ndarray, *, sample_rate: int, channels: int) :canonical: simvx.core._native.miniaudio_engine.AudioBuffer ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer.__init__ ``` ````{py:property} data_source :canonical: simvx.core._native.miniaudio_engine.AudioBuffer.data_source :type: typing.Any ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer.data_source ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.AudioBuffer.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.AudioBuffer.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.AudioBuffer.__del__ ``` ```` ````` `````{py:class} StreamSource(engine: simvx.core._native.miniaudio_engine.Engine, *, sample_rate: int, channels: int, buffer_seconds: float = 0.5, format: str = 's16') :canonical: simvx.core._native.miniaudio_engine.StreamSource ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.__init__ ``` ````{py:property} data_source :canonical: simvx.core._native.miniaudio_engine.StreamSource.data_source :type: typing.Any ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.data_source ``` ```` ````{py:property} format :canonical: simvx.core._native.miniaudio_engine.StreamSource.format :type: str ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.format ``` ```` ````{py:property} sample_rate :canonical: simvx.core._native.miniaudio_engine.StreamSource.sample_rate :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.sample_rate ``` ```` ````{py:property} channels :canonical: simvx.core._native.miniaudio_engine.StreamSource.channels :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.channels ``` ```` ````{py:property} buffer_size_frames :canonical: simvx.core._native.miniaudio_engine.StreamSource.buffer_size_frames :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.buffer_size_frames ``` ```` ````{py:property} available_write_frames :canonical: simvx.core._native.miniaudio_engine.StreamSource.available_write_frames :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.available_write_frames ``` ```` ````{py:property} available_read_frames :canonical: simvx.core._native.miniaudio_engine.StreamSource.available_read_frames :type: int ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.available_read_frames ``` ```` ````{py:method} write(chunk: bytes) -> int :canonical: simvx.core._native.miniaudio_engine.StreamSource.write ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.write ``` ```` ````{py:method} reset() -> None :canonical: simvx.core._native.miniaudio_engine.StreamSource.reset ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.reset ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.StreamSource.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.StreamSource.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.StreamSource.__del__ ``` ```` ````` `````{py:class} Sound(engine: simvx.core._native.miniaudio_engine.Engine, *, spatial: bool = False, pitch_enabled: bool = True) :canonical: simvx.core._native.miniaudio_engine.Sound ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.__init__ ``` ````{py:method} from_file(engine: simvx.core._native.miniaudio_engine.Engine, path: str | os.PathLike, *, group: simvx.core._native.miniaudio_engine.SoundGroup | None = None, spatial: bool = False, pitch_enabled: bool = True, decode_now: bool = True, stream: bool = False) -> simvx.core._native.miniaudio_engine.Sound :canonical: simvx.core._native.miniaudio_engine.Sound.from_file :classmethod: ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.from_file ``` ```` ````{py:method} from_buffer(engine: simvx.core._native.miniaudio_engine.Engine, buffer: simvx.core._native.miniaudio_engine.AudioBuffer, *, group: simvx.core._native.miniaudio_engine.SoundGroup | None = None, spatial: bool = False, pitch_enabled: bool = True) -> simvx.core._native.miniaudio_engine.Sound :canonical: simvx.core._native.miniaudio_engine.Sound.from_buffer :classmethod: ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.from_buffer ``` ```` ````{py:method} from_stream(engine: simvx.core._native.miniaudio_engine.Engine, stream: simvx.core._native.miniaudio_engine.StreamSource, *, group: simvx.core._native.miniaudio_engine.SoundGroup | None = None, spatial: bool = False) -> simvx.core._native.miniaudio_engine.Sound :canonical: simvx.core._native.miniaudio_engine.Sound.from_stream :classmethod: ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.from_stream ``` ```` ````{py:method} from_data_source(engine: simvx.core._native.miniaudio_engine.Engine, data_source: typing.Any, *, keeper: typing.Any = None, group: simvx.core._native.miniaudio_engine.SoundGroup | None = None, spatial: bool = False, pitch_enabled: bool = True) -> simvx.core._native.miniaudio_engine.Sound :canonical: simvx.core._native.miniaudio_engine.Sound.from_data_source :classmethod: ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.from_data_source ``` ```` ````{py:method} start() -> None :canonical: simvx.core._native.miniaudio_engine.Sound.start ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.start ``` ```` ````{py:method} stop() -> None :canonical: simvx.core._native.miniaudio_engine.Sound.stop ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.stop ``` ```` ````{py:method} set_volume(linear_gain: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_volume ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_volume ``` ```` ````{py:method} set_pan(pan: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_pan ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_pan ``` ```` ````{py:method} set_pitch(pitch: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_pitch ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_pitch ``` ```` ````{py:method} set_looping(looping: bool) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_looping ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_looping ``` ```` ````{py:method} set_position(x: float, y: float, z: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_position ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_position ``` ```` ````{py:method} set_velocity(x: float, y: float, z: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_velocity ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_velocity ``` ```` ````{py:method} set_spatialization_enabled(enabled: bool) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_spatialization_enabled ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_spatialization_enabled ``` ```` ````{py:method} set_min_distance(d: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_min_distance ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_min_distance ``` ```` ````{py:method} set_max_distance(d: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_max_distance ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_max_distance ``` ```` ````{py:method} set_rolloff(r: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_rolloff ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_rolloff ``` ```` ````{py:method} set_doppler_factor(f: float) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.set_doppler_factor ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.set_doppler_factor ``` ```` ````{py:method} is_playing() -> bool :canonical: simvx.core._native.miniaudio_engine.Sound.is_playing ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.is_playing ``` ```` ````{py:method} at_end() -> bool :canonical: simvx.core._native.miniaudio_engine.Sound.at_end ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.at_end ``` ```` ````{py:method} seek_to_frame(frame: int) -> None :canonical: simvx.core._native.miniaudio_engine.Sound.seek_to_frame ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.seek_to_frame ``` ```` ````{py:method} cursor_frames() -> int :canonical: simvx.core._native.miniaudio_engine.Sound.cursor_frames ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.cursor_frames ``` ```` ````{py:method} length_frames() -> int :canonical: simvx.core._native.miniaudio_engine.Sound.length_frames ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.length_frames ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.Sound.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.Sound.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.Sound.__del__ ``` ```` ````` `````{py:class} EffectNode(engine: simvx.core._native.miniaudio_engine.Engine) :canonical: simvx.core._native.miniaudio_engine.EffectNode Bases: {py:obj}`abc.ABC` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.EffectNode.handle :type: typing.Any ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode.handle ``` ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.EffectNode.shutdown ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode.shutdown ``` ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.EffectNode.__del__ ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.EffectNode.__del__ ``` ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.EffectNode.__slots__ :value: > () ```` ````` `````{py:class} LPFEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, cutoff_hz: float = 1000.0, q: float = 0.707) :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LPFEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LPFEffectNode.__init__ ``` ````{py:method} set_params(cutoff_hz: float, q: float) -> None :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LPFEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.LPFEffectNode.__slots__ :value: > () ```` ````` `````{py:class} HPFEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, cutoff_hz: float = 1000.0, q: float = 0.707) :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HPFEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HPFEffectNode.__init__ ``` ````{py:method} set_params(cutoff_hz: float, q: float) -> None :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HPFEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.HPFEffectNode.__slots__ :value: > () ```` ````` `````{py:class} BPFEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, cutoff_hz: float = 1000.0, q: float = 0.707) :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.BPFEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.BPFEffectNode.__init__ ``` ````{py:method} set_params(cutoff_hz: float, q: float) -> None :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.BPFEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.BPFEffectNode.__slots__ :value: > () ```` ````` `````{py:class} NotchEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, cutoff_hz: float = 1000.0, q: float = 1.0) :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.NotchEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.NotchEffectNode.__init__ ``` ````{py:method} set_params(cutoff_hz: float, q: float) -> None :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.NotchEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.NotchEffectNode.__slots__ :value: > () ```` ````` `````{py:class} PeakEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, freq: float = 1000.0, q: float = 1.0, gain_db: float = 0.0) :canonical: simvx.core._native.miniaudio_engine.PeakEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.PeakEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.PeakEffectNode.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.PeakEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.PeakEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.PeakEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.PeakEffectNode.__slots__ :value: > () ```` ````` `````{py:class} LowShelfEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, freq: float = 200.0, q: float = 1.0, gain_db: float = 0.0) :canonical: simvx.core._native.miniaudio_engine.LowShelfEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LowShelfEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.LowShelfEffectNode.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.LowShelfEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.LowShelfEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.LowShelfEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.LowShelfEffectNode.__slots__ :value: > () ```` ````` `````{py:class} HighShelfEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, freq: float = 8000.0, q: float = 1.0, gain_db: float = 0.0) :canonical: simvx.core._native.miniaudio_engine.HighShelfEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HighShelfEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.HighShelfEffectNode.__init__ ``` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.HighShelfEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.HighShelfEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.HighShelfEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.HighShelfEffectNode.__slots__ :value: > () ```` ````` `````{py:class} DelayEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, delay_seconds: float = 0.25, decay: float = 0.4, wet: float = 0.5, dry: float = 0.5) :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode.__init__ ``` ````{py:method} set_wet(wet: float) -> None :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.set_wet ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode.set_wet ``` ```` ````{py:method} set_dry(dry: float) -> None :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.set_dry ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode.set_dry ``` ```` ````{py:method} set_decay(decay: float) -> None :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.set_decay ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.DelayEffectNode.set_decay ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.DelayEffectNode.__slots__ :value: > () ```` ````` `````{py:class} SoftClipEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, drive: float = 2.0, output_gain: float = 1.0) :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoftClipEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoftClipEffectNode.__init__ ``` ````{py:method} set_params(drive: float, output_gain: float) -> None :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.SoftClipEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.SoftClipEffectNode.__slots__ :value: > () ```` ````` `````{py:class} CompressorEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, threshold_db: float = -24.0, ratio: float = 4.0, attack_ms: float = 5.0, release_ms: float = 100.0, knee_db: float = 6.0, makeup_db: float = 0.0) :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.CompressorEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.CompressorEffectNode.__init__ ``` ````{py:method} set_params(*, threshold_db: float | None = None, ratio: float | None = None, attack_ms: float | None = None, release_ms: float | None = None, knee_db: float | None = None, makeup_db: float | None = None) -> None :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.CompressorEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.CompressorEffectNode.__slots__ :value: > () ```` ````` `````{py:class} FreeverbEffectNode(engine: simvx.core._native.miniaudio_engine.Engine, *, room_size: float = 0.5, damping: float = 0.5, wet: float = 0.3, dry: float = 0.7, width: float = 1.0, freeze: bool = False) :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode Bases: {py:obj}`simvx.core._native.miniaudio_engine.EffectNode` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.FreeverbEffectNode ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.FreeverbEffectNode.__init__ ``` ````{py:method} set_params(*, room_size: float | None = None, damping: float | None = None, wet: float | None = None, dry: float | None = None, width: float | None = None, freeze: bool | None = None) -> None :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode.set_params ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.FreeverbEffectNode.set_params ``` ```` ````{py:property} handle :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode.handle :type: typing.Any ```` ````{py:method} shutdown() -> None :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode.shutdown ```` ````{py:method} __del__() -> None :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode.__del__ ```` ````{py:attribute} __slots__ :canonical: simvx.core._native.miniaudio_engine.FreeverbEffectNode.__slots__ :value: > () ```` ````` ````{py:function} engine_endpoint(engine: simvx.core._native.miniaudio_engine.Engine) -> typing.Any :canonical: simvx.core._native.miniaudio_engine.engine_endpoint ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.engine_endpoint ``` ```` ````{py:function} sound_group_as_node(group: simvx.core._native.miniaudio_engine.SoundGroup) -> typing.Any :canonical: simvx.core._native.miniaudio_engine.sound_group_as_node ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.sound_group_as_node ``` ```` ````{py:function} attach_node(src: typing.Any, src_bus: int, dst: typing.Any, dst_bus: int) -> None :canonical: simvx.core._native.miniaudio_engine.attach_node ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.attach_node ``` ```` ````{py:function} detach_node(src: typing.Any, src_bus: int) -> None :canonical: simvx.core._native.miniaudio_engine.detach_node ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.detach_node ``` ```` ````{py:function} set_node_output_volume(node: typing.Any, bus: int, volume: float) -> None :canonical: simvx.core._native.miniaudio_engine.set_node_output_volume ```{autodoc2-docstring} simvx.core._native.miniaudio_engine.set_node_output_volume ``` ````