├── .github └── workflows │ └── python-publish.yml ├── .gitignore ├── .idea ├── PyWwise.iml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── misc.xml ├── modules.xml ├── vcs.xml └── webResources.xml ├── CHANGES.md ├── LICENSE ├── MANIFEST.in ├── NOTICE ├── Pipfile ├── README.md ├── pyproject.toml ├── pywwise ├── __init__.py ├── aliases.py ├── decorators.py ├── descriptors.py ├── enums.py ├── metas.py ├── modules.py ├── objects │ ├── __init__.py │ ├── abc.py │ ├── components │ │ └── __init__.py │ ├── effects │ │ ├── __init__.py │ │ ├── mastering_suite.py │ │ ├── wwise_3d_audio_bed_mixer.py │ │ ├── wwise_compressor.py │ │ ├── wwise_convolution_reverb.py │ │ ├── wwise_delay.py │ │ ├── wwise_expander.py │ │ ├── wwise_flanger.py │ │ ├── wwise_gain.py │ │ ├── wwise_guitar_distortion.py │ │ ├── wwise_harmonizer.py │ │ ├── wwise_matrix_reverb.py │ │ ├── wwise_meter.py │ │ ├── wwise_parametric_eq.py │ │ ├── wwise_peak_limiter.py │ │ ├── wwise_pitch_shifter.py │ │ ├── wwise_recorder.py │ │ ├── wwise_reflect.py │ │ ├── wwise_roomverb.py │ │ ├── wwise_stereo_delay.py │ │ ├── wwise_time_stretch.py │ │ └── wwise_tremolo.py │ ├── sources │ │ ├── __init__.py │ │ ├── impacter.py │ │ ├── motion_source.py │ │ ├── soundseed_air_wind.py │ │ ├── soundseed_air_woosh.py │ │ ├── soundseed_grain.py │ │ ├── wwise_silence.py │ │ ├── wwise_synth_one.py │ │ └── wwise_tone_generator.py │ └── types │ │ ├── __init__.py │ │ ├── acoustic_texture.py │ │ ├── action.py │ │ ├── action_exception.py │ │ ├── actor_mixer.py │ │ ├── attenuation.py │ │ ├── audio_device.py │ │ ├── audio_source.py │ │ ├── aux_bus.py │ │ ├── blend_container.py │ │ ├── blend_track.py │ │ ├── bus.py │ │ ├── control_surface_binding.py │ │ ├── control_surface_binding_group.py │ │ ├── control_surface_session.py │ │ ├── conversion.py │ │ ├── curve.py │ │ ├── custom_state.py │ │ ├── dialogue_event.py │ │ ├── effect.py │ │ ├── effect_slot.py │ │ ├── event.py │ │ ├── external_source.py │ │ ├── external_source_file.py │ │ ├── folder.py │ │ ├── game_parameter.py │ │ ├── language.py │ │ ├── marker.py │ │ ├── metadata.py │ │ ├── midi_file_source.py │ │ ├── midi_parameter.py │ │ ├── mixing_session.py │ │ ├── modifier.py │ │ ├── modulator_envelope.py │ │ ├── modulator_lfo.py │ │ ├── modulator_time.py │ │ ├── multi_switch_entry.py │ │ ├── music_clip.py │ │ ├── music_clip_midi.py │ │ ├── music_cue.py │ │ ├── music_event_cue.py │ │ ├── music_fade.py │ │ ├── music_playlist_container.py │ │ ├── music_playlist_item.py │ │ ├── music_segment.py │ │ ├── music_stinger.py │ │ ├── music_switch_container.py │ │ ├── music_track.py │ │ ├── music_track_sequence.py │ │ ├── music_transition.py │ │ ├── object_setting_assoc.py │ │ ├── panner.py │ │ ├── path_2d.py │ │ ├── platform.py │ │ ├── plugin_data_source.py │ │ ├── position.py │ │ ├── project.py │ │ ├── query.py │ │ ├── random_sequence_container.py │ │ ├── rtpc.py │ │ ├── search_criteria.py │ │ ├── sound.py │ │ ├── sound_bank.py │ │ ├── soundcaster_session.py │ │ ├── source_plugin.py │ │ ├── state.py │ │ ├── state_group.py │ │ ├── switch.py │ │ ├── switch_container.py │ │ ├── switch_group.py │ │ ├── trigger.py │ │ ├── user_project_settings.py │ │ └── work_unit.py ├── primitives.py ├── statics.py ├── structs.py ├── waapi │ ├── __init__.py │ └── ak │ │ ├── __init__.py │ │ ├── ak.py │ │ ├── soundengine │ │ ├── __init__.py │ │ └── soundengine.py │ │ └── wwise │ │ ├── __init__.py │ │ ├── console │ │ ├── __init__.py │ │ ├── console.py │ │ └── project.py │ │ ├── core │ │ ├── __init__.py │ │ ├── audio.py │ │ ├── audio_source_peaks.py │ │ ├── capture_log.py │ │ ├── core.py │ │ ├── game_parameter.py │ │ ├── log.py │ │ ├── object.py │ │ ├── profiler.py │ │ ├── project.py │ │ ├── remote.py │ │ ├── sound.py │ │ ├── soundbank.py │ │ ├── source_control.py │ │ ├── switch_container.py │ │ ├── transport.py │ │ └── undo.py │ │ ├── debug │ │ ├── __init__.py │ │ └── debug.py │ │ ├── ui │ │ ├── __init__.py │ │ ├── commands.py │ │ ├── project.py │ │ └── ui.py │ │ ├── waapi │ │ ├── __init__.py │ │ └── waapi.py │ │ └── wwise.py └── waql.py ├── requirements.txt ├── resources ├── data │ └── SoundBank_DefinitionFile_Test.tsv ├── lua │ └── main_ut.lua ├── waves │ └── WaveAsset_Test.wav └── wwise │ ├── Actor-Mixer Hierarchy │ └── Default Work Unit.wwu │ ├── Add-ons │ └── Commands │ │ └── pywwise_dev.json │ ├── Attenuations │ └── Default Work Unit.wwu │ ├── Audio Devices │ └── Default Work Unit.wwu │ ├── Control Surface Sessions │ └── Default Work Unit.wwu │ ├── Conversion Settings │ └── Default Work Unit.wwu │ ├── Dynamic Dialogue │ └── Default Work Unit.wwu │ ├── Effects │ └── Default Work Unit.wwu │ ├── Events │ └── Default Work Unit.wwu │ ├── Game Parameters │ └── Default Work Unit.wwu │ ├── Interactive Music Hierarchy │ └── Default Work Unit.wwu │ ├── Master-Mixer Hierarchy │ └── Default Work Unit.wwu │ ├── Metadata │ └── Default Work Unit.wwu │ ├── Mixing Sessions │ └── Default Work Unit.wwu │ ├── Modulators │ └── Default Work Unit.wwu │ ├── Originals │ └── Voices │ │ └── English(US) │ │ └── UnitTest_OhSheeshSniper.wav │ ├── Presets │ ├── Default Work Unit.wwu │ └── Factory Spatial Audio.wwu │ ├── PyWwise.wproj │ ├── Queries │ └── Default Work Unit.wwu │ ├── SoundBanks │ └── Default Work Unit.wwu │ ├── Soundcaster Sessions │ └── Default Work Unit.wwu │ ├── States │ └── Default Work Unit.wwu │ ├── Switches │ └── Default Work Unit.wwu │ ├── Triggers │ └── Default Work Unit.wwu │ └── Virtual Acoustics │ └── Default Work Unit.wwu ├── setup.cfg ├── setup.py ├── tests ├── constants.py └── testclass.py └── upload.py /.github/workflows/python-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will upload a Python Package using Twine when a release is created 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries 3 | 4 | # This workflow uses actions that are not certified by GitHub. 5 | # They are provided by a third-party and are governed by 6 | # separate terms of service, privacy policy, and support 7 | # documentation. 8 | 9 | name: Upload Python Package 10 | 11 | on: 12 | release: 13 | types: [ published ] 14 | 15 | permissions: 16 | contents: read 17 | 18 | jobs: 19 | deploy: 20 | 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Set up Python 26 | uses: actions/setup-python@v3 27 | with: 28 | python-version: '3.x' 29 | - name: Install dependencies 30 | run: | 31 | python -m pip install --upgrade pip 32 | pip install build 33 | - name: Build package 34 | run: python -m build 35 | - name: Publish package 36 | uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 37 | with: 38 | user: __token__ 39 | password: ${{ secrets.PYPI_API_TOKEN }} 40 | -------------------------------------------------------------------------------- /.idea/PyWwise.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/webResources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /CHANGES.md: -------------------------------------------------------------------------------- 1 | # 0.2 (March 15, 2025) 2 | - Support for getting and setting properties in Wwise objects. 3 | - Getters for common paths in ProjectPath and OriginalsPath.. 4 | - Enhanced WaqlQuery class (a beginner-friendly way to use WAQL). 5 | - Extended Python support to 3.11, for better compatibility with some versions of Unreal Engine 5. 6 | - Enhanced event data for `ak.wwise.core.soundbank.generated`. 7 | 8 | # 0.1 (October 21, 2024) 9 | - All functions and topics are implemented and functional. 10 | - Complete selection of Enums, Dataclasses, Aliases, and Primitive-like classes. 11 | - Support for context management (`with` statements). 12 | - Basic helper class for WAQL (Wwise Authoring Query Language) statements. -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include pywwise/*.py 2 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2024 Matheus Vilano 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | https://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [requires] 7 | python_version = "3.12" 8 | python_full_version = "3.12.3" 9 | 10 | [packages] 11 | simplevent = "~=2.1.3" 12 | setuptools = "~=70.1.1" 13 | waapi-client = "~=0.7.2" 14 | 15 | [dev-packages] 16 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=61.0", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [project] 6 | name = "pywwise" 7 | version = "0.2.3" 8 | description = "A comprehensive Wwise Authoring API wrapper - fully documented, with auto-completion in mind." 9 | authors = [{ name = "Matheus Vilano" }] 10 | license = { file = "LICENSE" } 11 | readme = "README.md" 12 | requires-python = ">=3.11" 13 | keywords = ["audiokinetic", "wwise", "waapi", "game", "audio", "sound", "automation", "scripting", "asset", "pipeline"] 14 | 15 | classifiers = [ 16 | "Development Status :: 4 - Beta", 17 | "Intended Audience :: Developers", 18 | "Intended Audience :: Education", 19 | "License :: OSI Approved :: Apache Software License", 20 | "Operating System :: OS Independent", 21 | "Programming Language :: Python :: 3", 22 | ] 23 | 24 | dependencies = [ 25 | "simplevent~=2.2.0", 26 | "waapi-client~=0.7.2" 27 | ] 28 | 29 | [project.urls] 30 | "Author Website" = "https://www.matheusvilano.com/" 31 | "Git Repository" = "https://github.com/matheusvilano/PyWwise.git" 32 | 33 | [tool.setuptools.packages] 34 | find = { where = ["."], include = ["pywwise", "pywwise.*"] } 35 | 36 | [tool.setuptools.package-data] 37 | "pywwise" = ["**/*.py"] 38 | -------------------------------------------------------------------------------- /pywwise/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from logging import CRITICAL as _LEVEL_CRITICAL, getLogger as _getLogger 5 | 6 | from waapi import CallbackExecutor, SequentialThreadExecutor 7 | 8 | from pywwise.aliases import * 9 | from pywwise.enums import * 10 | from pywwise.objects import * 11 | from pywwise.primitives import * 12 | from pywwise.structs import * 13 | from pywwise.waapi.ak import Ak as _Ak, WwiseConnection 14 | from pywwise.waql import * 15 | 16 | _getLogger("waapi").setLevel(_LEVEL_CRITICAL) 17 | 18 | 19 | def new_waapi_connection(url: str = "ws://127.0.0.1:8080/waapi", *, allow_exception: bool = False, 20 | callback_executor: CallbackExecutor = SequentialThreadExecutor, 21 | is_debug_build: bool = False, is_console_instance: bool = False, 22 | watch_list: tuple[WwiseObjectWatch, ...] = ()) -> WwiseConnection: 23 | """ 24 | Connects to an instance of Wwise. 25 | :param url: URL of the Wwise Authoring API WAMP server, defaults to `ws://127.0.0.1:8080/waapi`. 26 | :param allow_exception: Allow errors on call and subscribe to throw an exception. Default is False. 27 | :param callback_executor: Executor strategy for event callbacks. 28 | :param is_debug_build: Should be set to true if the instance of Wwise is a debug build and debug-only. 29 | :param is_console_instance: Should be set to true if the instance of Wwise is running in a console window. 30 | functions/topics are required. 31 | :param watch_list: A tuple of `WwiseObjectWatch` instances. This will be used to set up the 32 | `ak.wwise.core.object.property_changed` event. 33 | :return: A WAAPI connection. 34 | """ 35 | return _Ak(url, allow_exception, callback_executor, is_debug_build, is_console_instance, watch_list) 36 | 37 | 38 | def set_waapi_logging(level: int): 39 | """ 40 | Sets the WAAPI logger's level. By default, the logger will only log `CRITICAL` errors, which are rare. Use this 41 | function if you are experiencing issues with any functions/topics and would like more information from the logger. 42 | :param level: The level, represented as an integer. Common values: NOTSET=0, DEBUG=10, INFO=20, WARNING=30, 43 | ERROR=40, CRITICAL=50. 44 | """ 45 | _getLogger("waapi").setLevel(level) 46 | -------------------------------------------------------------------------------- /pywwise/aliases.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pathlib import Path as _Path 5 | from re import Pattern as _Pattern 6 | from typing import (List as _List, Set as _Set, Tuple as _Tuple, TypeAlias as _TypeAlias, TypeVar as _TypeVar, 7 | Union as _Union) 8 | 9 | # region BuiltIn 10 | 11 | SystemPath: _TypeAlias = _Path 12 | """Represents a filesystem path.""" 13 | 14 | RegexPattern: _TypeAlias = _Pattern 15 | """Represents a Regex pattern.""" 16 | 17 | UnionType: _TypeVar = _TypeVar("UnionType") 18 | """Type variable for Unions.""" 19 | 20 | ListOrTuple: _TypeAlias = _Union[_List[UnionType], _Tuple[UnionType, ...]] 21 | """Custom type representing both `List` and `Tuple`.""" 22 | 23 | ListOrTupleOrSet: _TypeAlias = _Union[_List[UnionType], _Tuple[UnionType, ...], _Set[UnionType]] 24 | """Custom type representing `List`, `Tuple`, and `Set`.""" 25 | 26 | # endregion 27 | -------------------------------------------------------------------------------- /pywwise/decorators.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from typing import Callable as _Callable 5 | 6 | 7 | def callback(func: _Callable) -> _Callable: 8 | """ 9 | A decorator for PyWwise callbacks. Checks if the associated event is valid and has any subscribers. If it has at 10 | least one subscriber, it will be broadcast. For the decorated function to work properly: \n 11 | - its name should start with the prefix `_on_` (e.g. `_on_event_happened`). 12 | - its associated event should have the same name, minus the prefix `_on_` (e.g. `event_happened`). 13 | - both the decorated function and the associated event should be encapsulated within the same object. 14 | :param func: The function to decorate. 15 | :return: The decorated function. 16 | """ 17 | 18 | def wrapper(self, **kwargs): 19 | event = getattr(self, func.__name__[4:]) # removing the prefix "_on_" gives the RefEvent 20 | if event is None: 21 | raise NameError(f"Function '{func.__name__}' missing associated event: '{func.__name__[4:]}'.") 22 | if len(event) > 0: 23 | return func(self, event, **kwargs) 24 | 25 | return wrapper 26 | 27 | 28 | def console_instance_only(func: _Callable) -> _Callable: 29 | """ 30 | A decorator for functions that can only be called on a console instance of Wwise. Checks the owner object's 31 | `is_console_instance` (or, alternatively, `_is_console_instance`); if `None` or `False`, the decorated function will 32 | NOT be called and an exception is raised. Note: if there is no owner object, the check defaults to `None`. \n 33 | :param func: The function to decorate. 34 | :raise: NameError - if `is_console_instance` does not exist. 35 | :raise: ValueError - if `is_console_instance` is False. 36 | :return: The decorated function. 37 | """ 38 | attr_name = "is_console_instance" 39 | 40 | def wrapper(self, *args, **kwargs): 41 | flag = getattr(self, attr_name) \ 42 | if hasattr(self, attr_name) \ 43 | else getattr(self, f"_{attr_name}", None) 44 | if flag is None: 45 | raise NameError(f"Object '{self}' does not have an attribute named '{attr_name}'.") 46 | if flag is True: 47 | raise ValueError(f"Debug function called on a non-console instance of 'Ak'.") 48 | return func(self, *args, **kwargs) 49 | 50 | return wrapper 51 | 52 | 53 | def debug_build_only(func: _Callable) -> _Callable: 54 | """ 55 | A decorator for PyWwise debug-only functions. Checks the owner object's `is_debug_build` (or, alternatively, 56 | `_is_debug_build`); if `None` or `False`, the decorated function will NOT be called and an exception is raised. 57 | Note: if there is no owner object, the check defaults to `None`. \n 58 | :param func: The function to decorate. 59 | :raise: NameError - if `is_debug_build` does not exist. 60 | :raise: ValueError - if `is_debug_build` is False. 61 | :return: The decorated function. 62 | """ 63 | attr_name = "is_debug_build" 64 | 65 | def wrapper(self, *args, **kwargs): 66 | flag = getattr(self, attr_name) \ 67 | if hasattr(self, attr_name) \ 68 | else getattr(self, f"_{attr_name}", None) 69 | if flag is None: 70 | raise NameError(f"Object '{self}' does not have an attribute named '{attr_name}'.") 71 | if flag is True: 72 | raise ValueError(f"Debug function called on a non-debug instance of 'Ak'.") 73 | return func(self, *args, **kwargs) 74 | 75 | return wrapper 76 | -------------------------------------------------------------------------------- /pywwise/metas.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | class SingletonMeta(type): 5 | """Metaclass for singletons.""" 6 | 7 | _instances = dict() 8 | """A dictionary where the keys are classes and the values are instances.""" 9 | 10 | def __call__(cls, *args, **kwargs): 11 | """ 12 | Operator `()`. 13 | :param args: Positional arguments. 14 | :param kwargs: Keyword arguments. 15 | :return: The singleton instance of the `cls` class. 16 | """ 17 | if cls not in cls._instances: 18 | instance = super().__call__(*args, **kwargs) 19 | cls._instances[cls] = instance 20 | return cls._instances[cls] 21 | 22 | 23 | class StaticMeta(type): 24 | """Metaclass for statics.""" 25 | 26 | def __call__(cls, *args, **kwargs): 27 | """ 28 | Operator `()`. Will prevent the creation of a new instance. 29 | :param args: Positional arguments. 30 | :param kwargs: Keyword arguments. 31 | :raise: TypeError, as a static class must not have any instances of itself. 32 | """ 33 | raise TypeError(f"Cannot instantiate a static class. Use '{cls.__name__}.function_name()' instead.") 34 | -------------------------------------------------------------------------------- /pywwise/modules.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from importlib import import_module as _import_module 5 | 6 | 7 | class LazyModule: 8 | """A proxy for lazy-importing modules.""" 9 | 10 | def __init__(self, module_name: str): 11 | """ 12 | Stores a module name, which will be lazy-initialized (deferred). 13 | :param module_name: The name of the module. 14 | """ 15 | self.module_name = module_name 16 | self._module = None 17 | 18 | def __getattr__(self, name): 19 | """ 20 | During the first access, 21 | :param name: 22 | :return: 23 | """ 24 | if self._module is None: 25 | self._module = _import_module(self.module_name) 26 | return getattr(self._module, name) 27 | -------------------------------------------------------------------------------- /pywwise/objects/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.abc import WwiseObject, WwiseObjectType 5 | from pywwise.objects.effects import (MasteringSuite, Wwise3DAudioBedMixer, WwiseCompressor, WwiseConvolutionReverb, 6 | WwiseDelay, WwiseExpander, WwiseFlanger, WwiseGain, WwiseGuitarDistortion, 7 | WwiseHarmonizer, WwiseMatrixReverb, WwiseMeter, WwiseParametricEq, 8 | WwisePeakLimiter, WwisePitchShifter, WwiseRecorder, WwiseReflect, WwiseRoomVerb, 9 | WwiseStereoDelay, WwiseTimeStretch, WwiseTremolo) 10 | from pywwise.objects.sources import (Impacter, MotionSource, SoundSeedAirWind, SoundSeedAirWoosh, SoundSeedGrain, 11 | WwiseSilence, WwiseSynthOne, WwiseToneGenerator) 12 | from pywwise.objects.types import (AcousticTexture, Action, ActionException, ActorMixer, Attenuation, AudioDevice, 13 | AudioSource, AuxBus, BlendContainer, BlendTrack, Bus, ControlSurfaceBinding, 14 | ControlSurfaceBindingGroup, ControlSurfaceSession, Conversion, Curve, 15 | CustomState, DialogueEvent, Effect, EffectSlot, Event, ExternalSource, 16 | ExternalSourceFile, Folder, GameParameter, Language, Marker, Metadata, 17 | MidiFileSource, MidiParameter, MixingSession, Modifier, ModulatorEnvelope, 18 | ModulatorLfo, ModulatorTime, MultiSwitchEntry, MusicClip, MusicClipMidi, 19 | MusicCue, MusicEventCue, MusicFade, MusicPlaylistContainer, MusicPlaylistItem, 20 | MusicSegment, MusicStinger, MusicSwitchContainer, MusicTrack, MusicTrackSequence, 21 | MusicTransition, ObjectSettingAssoc, Panner, Path2D, Platform, PluginDataSource, 22 | Position, Project, Query, RandomSequenceContainer, Rtpc, SearchCriteria, Sound, 23 | SoundBank, SoundcasterSession, SourcePlugin, State, StateGroup, Switch, 24 | SwitchContainer, SwitchGroup, Trigger, UserProjectSettings, WorkUnit) 25 | -------------------------------------------------------------------------------- /pywwise/objects/abc.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import Any as _Any, TYPE_CHECKING as _TYPE_CHECKING, TypeVar as _TypeVar 7 | 8 | if _TYPE_CHECKING: 9 | from pywwise.structs import WwiseObjectInfo 10 | 11 | from abc import ABC as _ABC 12 | from enum import Enum as _Enum 13 | from types import NoneType as _NoneType 14 | 15 | from pywwise.enums import EObjectType 16 | from pywwise.primitives import GUID, Name, ProjectPath 17 | from pywwise.waapi.ak.ak import WwiseConnection, Ak 18 | 19 | 20 | class WwiseObject(_ABC): 21 | """ 22 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wobjects_index.html \n 23 | The base class for any class that serves as interface for getting/setting properties on Wwise objects. 24 | """ 25 | 26 | def __init__(self, guid: GUID | WwiseObjectInfo, ak: WwiseConnection = None, 27 | platform: GUID | Name | _NoneType = None): 28 | """ 29 | Uses a GUID to initialize a strongly-typed dynamic object, capable of fetching information from Wwise as needed. 30 | :param guid: If you may also pass a `WwiseObjectInfo` instance - this function will extract only the GUID. 31 | :param ak: If you want to use a specific connection, specify it here. If not, the most recent connection will 32 | be used. 33 | :param platform: If you want your object to only be used on a specific platform, specify which one here. 34 | """ 35 | self._ak: WwiseConnection = ak if ak is not None else Ak.get_connections()[-1] 36 | self._guid: GUID = guid if isinstance(guid, GUID) else getattr(guid, "guid", GUID.get_null()) 37 | self._query: str = f"$ from object \"{self._guid}\" take 1" 38 | self._platform: GUID | Name | _NoneType = platform 39 | 40 | def get_property(self, name: str, default: _Any = None) -> _NoneType | bool | int | float | str | GUID | _Enum: 41 | """ 42 | Gets the value of a property, reference, or list from this object in Wwise. 43 | :param name: The name of the property, reference, or list. 44 | :param default: The default value, in case retrieving the value fails. 45 | :return: The value of the property. This *can* be `None`. 46 | """ 47 | info = self._ak.wwise.core.object.get(self._query, (name,))[0] 48 | return info.other.get(name, default) 49 | 50 | def set_property(self, name: str, value: _Any, is_reference: bool = False): 51 | if not is_reference: 52 | self._ak.wwise.core.object.set_property(self._guid, name, value, self._platform) 53 | else: 54 | self._ak.wwise.core.object.set_reference(self._guid, name, value, self._platform) 55 | 56 | @property 57 | def is_connected(self) -> bool: 58 | """ 59 | Checks if this instance is connected to Wwise. 60 | :return: True if connected, False otherwise. 61 | """ 62 | return self._ak.is_connected() if self._ak is not None else False 63 | 64 | @property 65 | def guid(self) -> GUID: 66 | """ 67 | Get GUID. 68 | :return: Current GUID. 69 | """ 70 | return self._guid 71 | 72 | @property 73 | def name(self) -> Name: 74 | """ 75 | Get name. 76 | :return: Current name. 77 | """ 78 | return self._ak.wwise.core.object.get(self._query)[0].name 79 | 80 | @name.setter 81 | def name(self, name: Name | str): 82 | """ 83 | Set name. 84 | :param name: New name. 85 | """ 86 | self._ak.wwise.core.object.set_name(self._guid, name) 87 | 88 | @property 89 | def path(self) -> ProjectPath: 90 | """ 91 | Get path. 92 | :return: Current path. 93 | """ 94 | return self._ak.wwise.core.object.get(self._query)[0].path 95 | 96 | @path.setter 97 | def path(self, path: ProjectPath): 98 | """ 99 | Set path. 100 | :param path: New path. 101 | """ 102 | if path[-1] == '\\': # ProjectPath always uses `\\` instead of `/`. 103 | path = path[:-1] # Remove slash. 104 | tokens = path.split('\\') 105 | if tokens[-1] == self.name: # We only need the path up to the parent. 106 | path = tokens[:-1] # Remove name. 107 | self._ak.wwise.core.object.move(self.guid, path) 108 | 109 | @property 110 | def type(self) -> EObjectType: 111 | """ 112 | Get type. 113 | :return: The type. 114 | """ 115 | return self._ak.wwise.core.object.get(self._query)[0].type 116 | 117 | 118 | WwiseObjectType = _TypeVar("WwiseObjectType", bound=WwiseObject) 119 | -------------------------------------------------------------------------------- /pywwise/objects/components/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matheusvilano/PyWwise/22f99a985c7bf2c2b11a412a42fa0ecec60168f2/pywwise/objects/components/__init__.py -------------------------------------------------------------------------------- /pywwise/objects/effects/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.effects.mastering_suite import MasteringSuite 5 | from pywwise.objects.effects.wwise_3d_audio_bed_mixer import Wwise3DAudioBedMixer 6 | from pywwise.objects.effects.wwise_compressor import WwiseCompressor 7 | from pywwise.objects.effects.wwise_convolution_reverb import WwiseConvolutionReverb 8 | from pywwise.objects.effects.wwise_delay import WwiseDelay 9 | from pywwise.objects.effects.wwise_expander import WwiseExpander 10 | from pywwise.objects.effects.wwise_flanger import WwiseFlanger 11 | from pywwise.objects.effects.wwise_gain import WwiseGain 12 | from pywwise.objects.effects.wwise_guitar_distortion import WwiseGuitarDistortion 13 | from pywwise.objects.effects.wwise_harmonizer import WwiseHarmonizer 14 | from pywwise.objects.effects.wwise_matrix_reverb import WwiseMatrixReverb 15 | from pywwise.objects.effects.wwise_meter import WwiseMeter 16 | from pywwise.objects.effects.wwise_parametric_eq import WwiseParametricEq 17 | from pywwise.objects.effects.wwise_peak_limiter import WwisePeakLimiter 18 | from pywwise.objects.effects.wwise_pitch_shifter import WwisePitchShifter 19 | from pywwise.objects.effects.wwise_recorder import WwiseRecorder 20 | from pywwise.objects.effects.wwise_reflect import WwiseReflect 21 | from pywwise.objects.effects.wwise_roomverb import WwiseRoomVerb 22 | from pywwise.objects.effects.wwise_stereo_delay import WwiseStereoDelay 23 | from pywwise.objects.effects.wwise_time_stretch import WwiseTimeStretch 24 | from pywwise.objects.effects.wwise_tremolo import WwiseTremolo 25 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_3d_audio_bed_mixer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EAudioObjectOptions, EMainMixConfiguration, EPassthroughMixPolicy 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Wwise3DAudioBedMixer(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_3d_audio_bed_mixer.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_3D_AUDIO_BED_MIXER`. 14 | """ 15 | main_mix_configuration = WwiseProperty[EMainMixConfiguration]("MainMixConfiguration", EMainMixConfiguration) 16 | passthrough_mix_policy = WwiseProperty[EPassthroughMixPolicy]("PassThroughMixPolicy", EPassthroughMixPolicy) 17 | system_audio_object_limit = WwiseProperty[int]("SystemAudioObjectLimit", int) 18 | system_audio_objects_policy = WwiseProperty[EAudioObjectOptions]("SystemAudioObjectsPolicy", EAudioObjectOptions) 19 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_compressor.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwiseCompressor(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_compressor.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.WWISE_COMPRESSOR`. 13 | """ 14 | attack_time = WwiseProperty[float]("AttackTime", float) 15 | channel_link = WwiseProperty[bool]("ChannelLink", bool) 16 | output_gain = WwiseProperty[float]("OutputGain", float) 17 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 18 | ratio = WwiseProperty[float]("Ratio", float) 19 | release_time = WwiseProperty[float]("ReleaseTime", float) 20 | threshold = WwiseProperty[float]("Threshold", float) 21 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_convolution_reverb.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import (EConvolutionReverbAlgorithm, EConvolutionReverbBlockSize, 6 | EConvolutionReverbIrChannelSelection, EConvolutionReverbIrLpfSlope, ESpeakerBitMask) 7 | from pywwise.objects.abc import WwiseObject 8 | 9 | 10 | class WwiseConvolutionReverb(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_convolution_reverb.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.WWISE_CONVOLUTION_REVERB`. 15 | """ 16 | algo_type_select = WwiseProperty[EConvolutionReverbAlgorithm]("AlgoTypeSelect", EConvolutionReverbAlgorithm) 17 | centre_level = WwiseProperty[float]("CenterLevel", float) 18 | channel_config_override = WwiseProperty[ESpeakerBitMask]("ChannelConfigOverride", ESpeakerBitMask) 19 | dry_level = WwiseProperty[float]("DryLevel", float) 20 | front_level = WwiseProperty[float]("FrontLevel", float) 21 | front_rear_delay = WwiseProperty[float]("FrontRearDelay", float) 22 | full_precision_media = WwiseProperty[bool]("FullPrecisionMedia", bool) 23 | hardware_acceleration = WwiseProperty[bool]("HardwareAcceleration", bool) 24 | ir_channel_selection = WwiseProperty[EConvolutionReverbIrChannelSelection]( 25 | "IRChannelSelect", EConvolutionReverbIrChannelSelection) 26 | ir_convolution_smooth = WwiseProperty[float]("IRConvolutionSmooth", float) 27 | ir_convolution_smooth_max = WwiseProperty[float]("IRConvolutionSmoothMax", float) 28 | ir_convolution_start = WwiseProperty[float]("IRConvolutionStart", float) 29 | ir_convolution_stop = WwiseProperty[float]("IRConvolutionStop", float) 30 | ir_convolution_threshold = WwiseProperty[float]("IRConvolutionThreshold", float) 31 | ir_graphic_eq_automate = WwiseProperty[bool]("IRGraphicEQAutomate", bool) 32 | ir_lpf_automate = WwiseProperty[bool]("IRLPFAutomate", bool) 33 | ir_lpf_slope = WwiseProperty[EConvolutionReverbIrLpfSlope]("IRLPFSlope", EConvolutionReverbIrLpfSlope) 34 | ir_lr_mix = WwiseProperty[float]("IRLRMix", float) 35 | ir_level = WwiseProperty[float]("IRLevel", float) 36 | ir_level_automate = WwiseProperty[bool]("IRLevelAutomate", bool) 37 | ir_stretch = WwiseProperty[float]("IRStretch", float) 38 | input_centre_level = WwiseProperty[float]("InputCenterLevel", float) 39 | input_lfe_level = WwiseProperty[float]("InputLFELevel", float) 40 | input_stereo_width = WwiseProperty[float]("InputStereoWidth", float) 41 | input_threshold = WwiseProperty[float]("InputThreshold", float) 42 | lfe_level = WwiseProperty[float]("LFELevel", float) 43 | pre_delay = WwiseProperty[float]("PreDelay", float) 44 | rear_level = WwiseProperty[float]("RearLevel", float) 45 | sound_engine_block_size = WwiseProperty[EConvolutionReverbBlockSize]( 46 | "SoundEngineBlockSize", EConvolutionReverbBlockSize) 47 | sound_engine_sample_rate_default = WwiseProperty[int]("SoundEngineSampleRateDefault", int) 48 | sound_engine_sample_rate_mac = WwiseProperty[int]("SoundEngineSampleRateMac", int) 49 | sound_engine_sample_rate_ios = WwiseProperty[int]("SoundEngineSampleRateiOS", int) 50 | stereo_width = WwiseProperty[float]("StereoWidth", float) 51 | wet_level = WwiseProperty[float]("WetLevel", float) 52 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_delay.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwiseDelay(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_delay.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.WWISE_DELAY`. 13 | """ 14 | delay_time = WwiseProperty[float]("DelayTime", float) 15 | feedback = WwiseProperty[float]("Feedback", float) 16 | feedback_enabled = WwiseProperty[bool]("FeedbackEnabled", bool) 17 | output_level = WwiseProperty[float]("OutputLevel", float) 18 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 19 | wet_dry_mix = WwiseProperty[float]("WetDryMix", float) 20 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_expander.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwiseExpander(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_expander.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.WWISE_EXPANDER`. 13 | """ 14 | attack_time = WwiseProperty[float]("AttackTime", float) 15 | channel_link = WwiseProperty[bool]("ChannelLink", bool) 16 | output_gain = WwiseProperty[float]("OutputGain", float) 17 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 18 | ratio = WwiseProperty[float]("Ratio", float) 19 | release_time = WwiseProperty[float]("ReleaseTime", float) 20 | threshold = WwiseProperty[float]("Threshold", float) 21 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_flanger.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EModPhaseMode, EModWaveform 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseFlanger(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_flanger.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_FLANGER`. 14 | """ 15 | delay_time = WwiseProperty[float]("DelayTime", float) 16 | dry_level = WwiseProperty[float]("DryLevel", float) 17 | enable_lfo = WwiseProperty[bool]("EnableLFO", bool) 18 | feed_back_level = WwiseProperty[float]("FeedBackLevel", float) 19 | feed_forward_level = WwiseProperty[float]("FeedForwardLevel", float) 20 | mod_depth = WwiseProperty[float]("ModDepth", float) 21 | mod_frequency = WwiseProperty[float]("ModFrequency", float) 22 | mod_pwm = WwiseProperty[float]("ModPWM", float) 23 | mod_phase_mode = WwiseProperty[EModPhaseMode]("ModPhaseMode", EModPhaseMode) 24 | mod_phase_offset = WwiseProperty[float]("ModPhaseOffset", float) 25 | mod_phase_spread = WwiseProperty[float]("ModPhaseSpread", float) 26 | mod_smoothing = WwiseProperty[float]("ModSmoothing", float) 27 | mod_waveform = WwiseProperty[EModWaveform]("ModWaveform", EModWaveform) 28 | output_level = WwiseProperty[float]("OutputLevel", float) 29 | process_centre = WwiseProperty[bool]("ProcessCenter", bool) 30 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 31 | wet_dry_mix = WwiseProperty[float]("WetDryMix", float) 32 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_gain.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwiseGain(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_gain.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.WwiseGain`. 13 | """ 14 | full_band_gain = WwiseProperty[float]("FullBandGain", float) 15 | lfe_gain = WwiseProperty[float]("LFEGain", float) 16 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_guitar_distortion.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EGuitarDistortionType, EGuitarDistortionFilterType 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseGuitarDistortion(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_guitar_distortion.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_GUITAR_DISTORTION`. 14 | """ 15 | distortion_drive = WwiseProperty[float]("DistortionDrive", float) 16 | distortion_tone = WwiseProperty[float]("DistortionTone", float) 17 | distortion_type = WwiseProperty[EGuitarDistortionType]("DistortionType", EGuitarDistortionType) 18 | output_level = WwiseProperty[float]("OutputLevel", float) 19 | post_eq_band1_enable = WwiseProperty[bool]("PostEQBand1Enable", bool) 20 | post_eq_band1_type = WwiseProperty[EGuitarDistortionFilterType]("PostEQBand1FilterType", EGuitarDistortionFilterType) 21 | post_eq_band1_frequency = WwiseProperty[float]("PostEQBand1Frequency", float) 22 | post_eq_band1_gain = WwiseProperty[float]("PostEQBand1Gain", float) 23 | post_eq_band1_q = WwiseProperty[float]("PostEQBand1QFactor", float) 24 | post_eq_band2_enable = WwiseProperty[bool]("PostEQBand2Enable", bool) 25 | post_eq_band2_type = WwiseProperty[EGuitarDistortionFilterType]("PostEQBand2FilterType", EGuitarDistortionFilterType) 26 | post_eq_band2_frequency = WwiseProperty[float]("PostEQBand2Frequency", float) 27 | post_eq_band2_gain = WwiseProperty[float]("PostEQBand2Gain", float) 28 | post_eq_band2_q = WwiseProperty[float]("PostEQBand2QFactor", float) 29 | post_eq_band3_enable = WwiseProperty[bool]("PostEQBand3Enable", bool) 30 | post_eq_band3_type = WwiseProperty[EGuitarDistortionFilterType]("PostEQBand3FilterType", EGuitarDistortionFilterType) 31 | post_eq_band3_frequency = WwiseProperty[float]("PostEQBand3Frequency", float) 32 | post_eq_band3_gain = WwiseProperty[float]("PostEQBand3Gain", float) 33 | post_eq_band3_q = WwiseProperty[float]("PostEQBand3QFactor", float) 34 | pre_eq_band1_enable = WwiseProperty[bool]("PreEQBand1Enable", bool) 35 | pre_eq_band1_type = WwiseProperty[EGuitarDistortionFilterType]("PreEQBand1FilterType", EGuitarDistortionFilterType) 36 | pre_eq_band1_frequency = WwiseProperty[float]("PreEQBand1Frequency", float) 37 | pre_eq_band1_gain = WwiseProperty[float]("PreEQBand1Gain", float) 38 | pre_eq_band1_q = WwiseProperty[float]("PreEQBand1QFactor", float) 39 | pre_eq_band2_enable = WwiseProperty[bool]("PreEQBand2Enable", bool) 40 | pre_eq_band2_type = WwiseProperty[EGuitarDistortionFilterType]("PreEQBand2FilterType", EGuitarDistortionFilterType) 41 | pre_eq_band2_frequency = WwiseProperty[float]("PreEQBand2Frequency", float) 42 | pre_eq_band2_gain = WwiseProperty[float]("PreEQBand2Gain", float) 43 | pre_eq_band2_q = WwiseProperty[float]("PreEQBand2QFactor", float) 44 | pre_eq_band3_enable = WwiseProperty[bool]("PreEQBand3Enable", bool) 45 | pre_eq_band3_type = WwiseProperty[EGuitarDistortionFilterType]("PreEQBand3FilterType", EGuitarDistortionFilterType) 46 | pre_eq_band3_frequency = WwiseProperty[float]("PreEQBand3Frequency", float) 47 | pre_eq_band3_gain = WwiseProperty[float]("PreEQBand3Gain", float) 48 | pre_eq_band3_q = WwiseProperty[float]("PreEQBand3QFactor", float) 49 | rectification = WwiseProperty[float]("Rectification", float) 50 | wet_dry_mix = WwiseProperty[float]("WetDryMix", float) 51 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_harmonizer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EHarmonizerFilterType, EHarmonizerInput 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseHarmonizer(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_harmonizer.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_HARMONIZER`. 14 | """ 15 | dry_level = WwiseProperty[float]("DryLevel", float) 16 | input_format = WwiseProperty[EHarmonizerInput]("Input", EHarmonizerInput) 17 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 18 | sync_dry = WwiseProperty[bool]("SyncDry", bool) 19 | voice1_enable = WwiseProperty[bool]("Voice1Enable", bool) 20 | voice1_filter_frequency = WwiseProperty[float]("Voice1FilterFrequency", float) 21 | voice1_filter_gain = WwiseProperty[float]("Voice1FilterGain", float) 22 | voice1_filter_q = WwiseProperty[float]("Voice1FilterQFactor", float) 23 | voice1_filter_type = WwiseProperty[EHarmonizerFilterType]("Voice1FilterType", EHarmonizerFilterType) 24 | voice1_gain = WwiseProperty[float]("Voice1Gain", float) 25 | voice1_pitch = WwiseProperty[float]("Voice1Pitch", float) 26 | voice2_enable = WwiseProperty[bool]("Voice2Enable", bool) 27 | voice2_filter_frequency = WwiseProperty[float]("Voice2FilterFrequency", float) 28 | voice2_filter_gain = WwiseProperty[float]("Voice2FilterGain", float) 29 | voice2_filter_q = WwiseProperty[float]("Voice2FilterQFactor", float) 30 | voice2_filter_type = WwiseProperty[EHarmonizerFilterType]("Voice2FilterType", EHarmonizerFilterType) 31 | voice2_gain = WwiseProperty[float]("Voice2Gain", float) 32 | voice2_pitch = WwiseProperty[float]("Voice2Pitch", float) 33 | wet_level = WwiseProperty[float]("WetLevel", float) 34 | window_size = WwiseProperty[int]("WindowSize", int) 35 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_matrix_reverb.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EMatrixReverbDelayCount, EMatrixReverbDelayLengthsMode 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseMatrixReverb(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_matrix_reverb.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_MATRIX_REVERB`. 14 | """ 15 | delay_lengths_mode = WwiseProperty[EMatrixReverbDelayLengthsMode]("DelayLengthsMode", EMatrixReverbDelayLengthsMode) 16 | delay_time_1 = WwiseProperty[float]("DelayTime1", float) 17 | delay_time_2 = WwiseProperty[float]("DelayTime2", float) 18 | delay_time_3 = WwiseProperty[float]("DelayTime3", float) 19 | delay_time_4 = WwiseProperty[float]("DelayTime4", float) 20 | delay_time_5 = WwiseProperty[float]("DelayTime5", float) 21 | delay_time_6 = WwiseProperty[float]("DelayTime6", float) 22 | delay_time_7 = WwiseProperty[float]("DelayTime7", float) 23 | delay_time_8 = WwiseProperty[float]("DelayTime8", float) 24 | delay_time_9 = WwiseProperty[float]("DelayTime9", float) 25 | delay_time_10 = WwiseProperty[float]("DelayTime10", float) 26 | delay_time_11 = WwiseProperty[float]("DelayTime11", float) 27 | delay_time_12 = WwiseProperty[float]("DelayTime12", float) 28 | delay_time_13 = WwiseProperty[float]("DelayTime13", float) 29 | delay_time_14 = WwiseProperty[float]("DelayTime14", float) 30 | delay_time_15 = WwiseProperty[float]("DelayTime15", float) 31 | delay_time_16 = WwiseProperty[float]("DelayTime16", float) 32 | dry_level = WwiseProperty[float]("DryLevel", float) 33 | hf_ratio = WwiseProperty[float]("HFRatio", float) 34 | number_of_delays = WwiseProperty[EMatrixReverbDelayCount]("NumberOfDelays", EMatrixReverbDelayCount) 35 | pre_delay = WwiseProperty[float]("PreDelay", float) 36 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 37 | reverb_time = WwiseProperty[float]("ReverbTime", float) 38 | wet_level = WwiseProperty[float]("WetLevel", float) 39 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_meter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EMeterMode, EMeterScope 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseMeter(WwiseObject): # TODO: add RTPC property once available 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_meter.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_METER`. 14 | """ 15 | apply_downstream_volume = WwiseProperty[bool]("ApplyDownstreamVolume", bool) 16 | attack_time = WwiseProperty[float]("AttackTime", float) 17 | hold = WwiseProperty[float]("Hold", float) 18 | infinite_hold = WwiseProperty[bool]("InfiniteHold", bool) 19 | max = WwiseProperty[float]("Max", float) 20 | meter_mode = WwiseProperty[EMeterMode]("MeterMode", EMeterMode) 21 | meter_scope = WwiseProperty[EMeterScope]("MeterScope", EMeterScope) 22 | min = WwiseProperty[float]("Min", float) 23 | release_time = WwiseProperty[float]("ReleaseTime", float) 24 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_parametric_eq.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EParametricEqFilterType 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseParametricEq(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_parametric_eq.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_PARAMETRIC_EQ`. 14 | """ 15 | filter_type_band1 = WwiseProperty[EParametricEqFilterType]("FilterTypeBand1", EParametricEqFilterType) 16 | filter_type_band2 = WwiseProperty[EParametricEqFilterType]("FilterTypeBand2", EParametricEqFilterType) 17 | filter_type_band3 = WwiseProperty[EParametricEqFilterType]("FilterTypeBand3", EParametricEqFilterType) 18 | frequency_band1 = WwiseProperty[float]("FrequencyBand1", float) 19 | frequency_band2 = WwiseProperty[float]("FrequencyBand2", float) 20 | frequency_band3 = WwiseProperty[float]("FrequencyBand3", float) 21 | gain_band1 = WwiseProperty[float]("GainBand1", float) 22 | gain_band2 = WwiseProperty[float]("GainBand2", float) 23 | gain_band3 = WwiseProperty[float]("GainBand3", float) 24 | on_off_band1 = WwiseProperty[bool]("OnOffBand1", bool) 25 | on_off_band2 = WwiseProperty[bool]("OnOffBand2", bool) 26 | on_off_band3 = WwiseProperty[bool]("OnOffBand3", bool) 27 | output_level = WwiseProperty[float]("OutputLevel", float) 28 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 29 | q_band1 = WwiseProperty[float]("QFactorBand1", float) 30 | q_band2 = WwiseProperty[float]("QFactorBand2", float) 31 | q_band3 = WwiseProperty[float]("QFactorBand3", float) 32 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_peak_limiter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwisePeakLimiter(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_peak_limiter.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.WwisePeakLimiter`. 13 | """ 14 | channel_link = WwiseProperty[bool]("ChannelLink", bool) 15 | look_ahead = WwiseProperty[float]("LookAhead", float) 16 | output_gain = WwiseProperty[float]("OutputGain", float) 17 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 18 | ratio = WwiseProperty[float]("Ratio", float) 19 | release_time = WwiseProperty[float]("ReleaseTime", float) 20 | threshold = WwiseProperty[float]("Threshold", float) 21 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_pitch_shifter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EPitchShifterFilterType, EPitchShifterInput 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwisePitchShifter(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_pitch_shifter.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_PITCH_SHIFTER`. 14 | """ 15 | delay_time = WwiseProperty[float]("DelayTime", float) 16 | dry_level = WwiseProperty[float]("DryLevel", float) 17 | filter_frequency = WwiseProperty[float]("FilterFrequency", float) 18 | filter_gain = WwiseProperty[float]("FilterGain", float) 19 | filter_q = WwiseProperty[float]("FilterQFactor", float) 20 | filter_type = WwiseProperty[EPitchShifterFilterType]("FilterType", EPitchShifterFilterType) 21 | input = WwiseProperty[EPitchShifterInput]("Input", EPitchShifterInput) 22 | pitch = WwiseProperty[float]("Pitch", float) 23 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 24 | sync_dry = WwiseProperty[bool]("SyncDry", bool) 25 | wet_level = WwiseProperty[float]("WetLevel", float) 26 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_recorder.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import ERecorderAmbisonicsChannelOrdering, ERecorderFormat 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseRecorder(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_recorder.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_RECORDER`. 14 | """ 15 | ambisonics_channel_ordering = WwiseProperty[ERecorderAmbisonicsChannelOrdering]( 16 | "AmbisonicsChannelOrdering", ERecorderAmbisonicsChannelOrdering) 17 | apply_downstream_volume = WwiseProperty[bool]("ApplyDownstreamVolume", bool) 18 | authoring_filename = WwiseProperty[str]("AuthoringFilename", str) 19 | centre = WwiseProperty[float]("Center", float) 20 | downmix_to_stereo = WwiseProperty[bool]("DownmixToStereo", bool) 21 | format = WwiseProperty[ERecorderFormat]("Format", ERecorderFormat) 22 | game_filename = WwiseProperty[str]("GameFilename", str) 23 | lfe = WwiseProperty[float]("LFE", float) 24 | rear = WwiseProperty[float]("Rear", float) 25 | surround = WwiseProperty[float]("Surround", float) 26 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_reflect.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import (EReflectAlgorithm, EReflectChannelConfig, EReflectDecorrelationStrengthSource, 6 | EReflectFilterType, EReflectThresholdMode) 7 | from pywwise.objects.abc import WwiseObject 8 | 9 | 10 | class WwiseReflect(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_reflect.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.WWISE_REFLECT`. 15 | """ 16 | base_texture_frequency = WwiseProperty[float]("BaseTextureFrequency", float) 17 | centre_percentage = WwiseProperty[float]("CenterPerc", float) 18 | curve_usage_mask = WwiseProperty[int]("CurveUsageMask", int) 19 | decorrelation_algorithm = WwiseProperty[EReflectAlgorithm]("DecorrAlgorithmSelect", EReflectAlgorithm) 20 | decorrelation_filter_max_reflection_order = WwiseProperty[int]("DecorrFilterMaxReflectionOrder", int) 21 | decorrelation_hardware_acceleration = WwiseProperty[bool]("DecorrHardwareAcceleration", bool) 22 | decorrelation_strength = WwiseProperty[float]("DecorrStrength", float) 23 | decorrelation_strength_source = WwiseProperty[EReflectDecorrelationStrengthSource]( 24 | "DecorrStrengthSource", EReflectDecorrelationStrengthSource) 25 | decorrelation_window_width = WwiseProperty[int]("DecorrWindowWidth", int) 26 | diffraction_warping = WwiseProperty[float]("DiffractionWarping", float) 27 | distance_threshold = WwiseProperty[float]("DistanceThreshold", float) 28 | distance_warping = WwiseProperty[float]("DistanceWarping", float) 29 | dry = WwiseProperty[float]("Dry", float) 30 | fade_time = WwiseProperty[float]("FadeTime", float) 31 | fusing_time = WwiseProperty[float]("FusingTime", float) 32 | material_filtering_select = WwiseProperty[EReflectAlgorithm]("MaterialFilteringSelect", EReflectAlgorithm) 33 | max_distance = WwiseProperty[float]("MaxDistance", float) 34 | max_reflections = WwiseProperty[float]("MaxReflections", float) 35 | output_channel_config = WwiseProperty[EReflectChannelConfig]("OutputChannelConfig", EReflectChannelConfig) 36 | param_filter_cutoff = WwiseProperty[float]("ParamFilterCutoff", float) 37 | param_filter_type = WwiseProperty[EReflectFilterType]("ParamFilterType", EReflectFilterType) 38 | pitch_threshold = WwiseProperty[float]("PitchThreshold", float) 39 | speed_of_sound = WwiseProperty[float]("SpeedOfSound", float) 40 | stereo_decorrelation = WwiseProperty[bool]("StereoDecorrelation", bool) 41 | threshold_mode = WwiseProperty[EReflectThresholdMode]("ThresholdMode", EReflectThresholdMode) 42 | wet = WwiseProperty[float]("Wet", float) 43 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_roomverb.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import ERoomVerbFilterType, ERoomVerbInsertPosition 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseRoomVerb(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_roomverb.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_ROOMVERB`. 14 | """ 15 | centre_level = WwiseProperty[float]("CenterLevel", float) 16 | dc_filter_cutoff_frequency = WwiseProperty[float]("DCFilterCutFreq", float) 17 | decay_time = WwiseProperty[float]("DecayTime", float) 18 | density = WwiseProperty[float]("Density", float) 19 | density_delay_max = WwiseProperty[float]("DensityDelayMax", float) 20 | density_delay_min = WwiseProperty[float]("DensityDelayMin", float) 21 | density_delay_rdm_percentage = WwiseProperty[float]("DensityDelayRdmPerc ", float) 22 | diffusion = WwiseProperty[float]("Diffusion", float) 23 | diffusion_delay_max = WwiseProperty[float]("DiffusionDelayMax", float) 24 | diffusion_delay_rdm_percentage = WwiseProperty[float]("DiffusionDelayRdmPerc", float) 25 | diffusion_delay_scale_percentage = WwiseProperty[float]("DiffusionDelayScalePerc", float) 26 | dry_level = WwiseProperty[float]("DryLevel", float) 27 | early_reflections_front_back_delay = WwiseProperty[float]("ERFrontBackDelay", float) 28 | early_reflections_level = WwiseProperty[float]("ERLevel", float) 29 | early_reflections_pattern = WwiseProperty[int]("ERPattern", int) 30 | enable_early_reflections = WwiseProperty[bool]("EnableEarlyReflections", bool) 31 | enable_tone_controls = WwiseProperty[bool]("EnableToneControls", bool) 32 | filter1_curve = WwiseProperty[ERoomVerbFilterType]("Filter1Curve", ERoomVerbFilterType) 33 | filter1_frequency = WwiseProperty[float]("Filter1Freq", float) 34 | filter1_gain = WwiseProperty[float]("Filter1Gain", float) 35 | filter1_insert_position = WwiseProperty[ERoomVerbInsertPosition]("Filter1InsertPos", ERoomVerbInsertPosition) 36 | filter1_q = WwiseProperty[float]("Filter1Q", float) 37 | filter2_curve = WwiseProperty[ERoomVerbFilterType]("Filter2Curve", ERoomVerbFilterType) 38 | filter2_frequency = WwiseProperty[float]("Filter2Freq", float) 39 | filter2_gain = WwiseProperty[float]("Filter2Gain", float) 40 | filter2_insert_position = WwiseProperty[ERoomVerbInsertPosition]("Filter2InsertPos", ERoomVerbInsertPosition) 41 | filter2_q = WwiseProperty[float]("Filter2Q", float) 42 | filter3_curve = WwiseProperty[ERoomVerbFilterType]("Filter3Curve", ERoomVerbFilterType) 43 | filter3_frequency = WwiseProperty[float]("Filter3Freq", float) 44 | filter3_gain = WwiseProperty[float]("Filter3Gain", float) 45 | filter3_insert_position = WwiseProperty[ERoomVerbInsertPosition]("Filter3InsertPos", ERoomVerbInsertPosition) 46 | filter3_q = WwiseProperty[float]("Filter3Q", float) 47 | front_level = WwiseProperty[float]("FrontLevel", float) 48 | high_frequency_damping = WwiseProperty[float]("HFDamping", float) 49 | input_centre_level = WwiseProperty[float]("InputCenterLevel", float) 50 | input_lfe_level = WwiseProperty[float]("InputLFELevel", float) 51 | lfe_level = WwiseProperty[float]("LFELevel", float) 52 | pre_delay = WwiseProperty[float]("PreDelay", float) 53 | quality = WwiseProperty[int]("Quality", int) 54 | rear_level = WwiseProperty[float]("RearLevel", float) 55 | reverb_level = WwiseProperty[float]("ReverbLevel", float) 56 | reverb_unit_input_delay = WwiseProperty[float]("ReverbUnitInputDelay", float) 57 | reverb_unit_input_delay_rmd_percentage = WwiseProperty[float]("ReverbUnitInputDelayRmdPerc", float) 58 | room_shape = WwiseProperty[float]("RoomShape", float) 59 | room_shape_max = WwiseProperty[float]("RoomShapeMax", float) 60 | room_shape_min = WwiseProperty[float]("RoomShapeMin", float) 61 | room_size = WwiseProperty[float]("RoomSize", float) 62 | stereo_width = WwiseProperty[float]("StereoWidth", float) 63 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_stereo_delay.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EStereoDelayFilterType, EStereoDelayInput 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseStereoDelay(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_stereo_delay.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_STEREO_DELAY`. 14 | """ 15 | dry_level = WwiseProperty[float]("DryLevel", float) 16 | enable_cross_feed = WwiseProperty[bool]("EnableCrossFeed", bool) 17 | enable_feedback = WwiseProperty[bool]("EnableFeedback", bool) 18 | filter_frequency = WwiseProperty[float]("FilterFrequency", float) 19 | filter_gain = WwiseProperty[float]("FilterGain", float) 20 | filter_q = WwiseProperty[float]("FilterQFactor", float) 21 | filter_type = WwiseProperty[EStereoDelayFilterType]("FilterType", EStereoDelayFilterType) 22 | front_rear_balance = WwiseProperty[float]("FrontRearBalance", float) 23 | left_crossfeed = WwiseProperty[float]("LeftCrossfeed", float) 24 | left_delay_time = WwiseProperty[float]("LeftDelayTime", float) 25 | left_feedback = WwiseProperty[float]("LeftFeedback", float) 26 | left_input_type = WwiseProperty[EStereoDelayInput]("LeftInputType", EStereoDelayInput) 27 | right_crossfeed = WwiseProperty[float]("RightCrossfeed", float) 28 | right_delay_time = WwiseProperty[float]("RightDelayTime", float) 29 | right_feedback = WwiseProperty[float]("RightFeedback", float) 30 | right_input_type = WwiseProperty[EStereoDelayInput]("RightInputType", EStereoDelayInput) 31 | wet_level = WwiseProperty[float]("WetLevel", float) 32 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_time_stretch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import ETimeStretchMode, ETimeStretchStereoProcessing 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseTimeStretch(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect_wwise_time_stretch.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_TIME_STRETCH`. 14 | """ 15 | output_gain = WwiseProperty[float]("OutputGain", float) 16 | pitch_shift = WwiseProperty[float]("PitchShift", float) 17 | pitch_shift_random = WwiseProperty[float]("PitchShiftRandom", float) 18 | quality = WwiseProperty[float]("Quality", float) 19 | stretch_mode = WwiseProperty[ETimeStretchMode]("QualityEnable", ETimeStretchMode) 20 | stereo_processing = WwiseProperty[ETimeStretchStereoProcessing]("StereoProcessing", ETimeStretchStereoProcessing) 21 | time_stretch = WwiseProperty[float]("TimeStretch", float) 22 | time_stretch_random = WwiseProperty[float]("TimeStretchRandom", float) 23 | window_size = WwiseProperty[int]("WindowSize", int) 24 | -------------------------------------------------------------------------------- /pywwise/objects/effects/wwise_tremolo.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EModPhaseMode, EModWaveform 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseTremolo(WwiseObject): 10 | """ 11 | \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WWISE_TREMOLO`. 14 | """ 15 | mod_depth = WwiseProperty[float]("ModDepth", float) 16 | mod_frequency = WwiseProperty[float]("ModFrequency", float) 17 | mod_pwm = WwiseProperty[float]("ModPWM", float) 18 | mod_phase_mode = WwiseProperty[EModPhaseMode]("ModPhaseMode", EModPhaseMode) 19 | mod_phase_offset = WwiseProperty[float]("ModPhaseOffset", float) 20 | mod_phase_spread = WwiseProperty[float]("ModPhaseSpread", float) 21 | mod_smoothing = WwiseProperty[float]("ModSmoothing", float) 22 | mod_waveform = WwiseProperty[EModWaveform]("ModWaveform", EModWaveform) 23 | output_gain = WwiseProperty[float]("OutputGain", float) 24 | process_centrering = WwiseProperty[bool]("ProcessCenter", bool) 25 | process_lfe = WwiseProperty[bool]("ProcessLFE", bool) 26 | -------------------------------------------------------------------------------- /pywwise/objects/sources/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.sources.impacter import Impacter 5 | from pywwise.objects.sources.motion_source import MotionSource 6 | from pywwise.objects.sources.soundseed_air_wind import SoundSeedAirWind 7 | from pywwise.objects.sources.soundseed_air_woosh import SoundSeedAirWoosh 8 | from pywwise.objects.sources.soundseed_grain import SoundSeedGrain 9 | from pywwise.objects.sources.wwise_silence import WwiseSilence 10 | from pywwise.objects.sources.wwise_synth_one import WwiseSynthOne 11 | from pywwise.objects.sources.wwise_tone_generator import WwiseToneGenerator 12 | -------------------------------------------------------------------------------- /pywwise/objects/sources/impacter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class Impacter(WwiseObject): # TODO: Implement enums for this class once the plugin is not in beta anymore. 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_impacter.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.SOURCE_PLUGIN`. Note: this plugin is in BETA and subject to change. Some 13 | properties might also not work as expected or even be displayed in the Wwise UI. 14 | """ 15 | excitation_mask = WwiseProperty[int]("ExcitationMask", int) 16 | excitation_selection_mode = WwiseProperty[int]("ExcitationSelectionMode", int) 17 | fm_depth = WwiseProperty[float]("FMDepth", float) 18 | fm_depth_random = WwiseProperty[float]("FMDepthRandom", float) 19 | file_excitation = WwiseProperty[int]("FileExcitation", int) 20 | file_model = WwiseProperty[int]("FileModel", int) 21 | impact_position = WwiseProperty[float]("ImpactPosition", float) 22 | impact_position_random = WwiseProperty[float]("ImpactPositionRandom", float) 23 | mass = WwiseProperty[float]("Mass", float) 24 | mass_random = WwiseProperty[float]("MassRandom", float) 25 | min_duration = WwiseProperty[float]("MinDuration", float) 26 | model_mask = WwiseProperty[int]("ModelMask", int) 27 | model_selection_mode = WwiseProperty[int]("ModelSelectionMode", int) 28 | num_files = WwiseProperty[int]("NumFiles", int) 29 | output_level = WwiseProperty[float]("OutputLevel", float) 30 | velocity = WwiseProperty[float]("Velocity", float) 31 | velocity_random = WwiseProperty[float]("VelocityRandom", float) 32 | -------------------------------------------------------------------------------- /pywwise/objects/sources/motion_source.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EMotionChannelConfig, EMotionDriver 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MotionSource(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_motion_source.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOURCE_PLUGIN`. 14 | """ 15 | channel_1 = WwiseProperty[EMotionDriver]("Channel1", EMotionDriver) 16 | channel_2 = WwiseProperty[EMotionDriver]("Channel2", EMotionDriver) 17 | channel_3 = WwiseProperty[EMotionDriver]("Channel3", EMotionDriver) 18 | channel_4 = WwiseProperty[EMotionDriver]("Channel4", EMotionDriver) 19 | channel_config = WwiseProperty[EMotionChannelConfig]("ChannelConfig", EMotionChannelConfig) 20 | driver_a = WwiseProperty[float]("DriverA", float) 21 | driver_b = WwiseProperty[float]("DriverB", float) 22 | driver_c = WwiseProperty[float]("DriverC", float) 23 | driver_d = WwiseProperty[float]("DriverD", float) 24 | driver_e = WwiseProperty[float]("DriverE", float) 25 | driver_f = WwiseProperty[float]("DriverF", float) 26 | driver_g = WwiseProperty[float]("DriverG", float) 27 | driver_h = WwiseProperty[float]("DriverH", float) 28 | high_1 = WwiseProperty[EMotionDriver]("High1", EMotionDriver) 29 | high_2 = WwiseProperty[EMotionDriver]("High2", EMotionDriver) 30 | left_trigger = WwiseProperty[EMotionDriver]("LeftTrigger", EMotionDriver) 31 | low_1 = WwiseProperty[EMotionDriver]("Low1", EMotionDriver) 32 | low_2 = WwiseProperty[EMotionDriver]("Low2", EMotionDriver) 33 | right_trigger = WwiseProperty[EMotionDriver]("RightTrigger", EMotionDriver) 34 | -------------------------------------------------------------------------------- /pywwise/objects/sources/soundseed_air_wind.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.enums import ESoundSeedAirChannelMask 5 | from pywwise.descriptors import WwiseProperty 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class SoundSeedAirWind(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_soundseed_air_wind.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOURCE_PLUGIN`. 14 | """ 15 | attenuation_roll_of = WwiseProperty[float]("AttenuationRollOff", float) 16 | average_velocity = WwiseProperty[float]("AverageVelocity", float) 17 | average_velocity_automate = WwiseProperty[bool]("AverageVelocityAutomate", bool) 18 | average_velocity_random = WwiseProperty[float]("AverageVelocityRandom", float) 19 | channel_mask = WwiseProperty[ESoundSeedAirChannelMask]("ChannelMask", ESoundSeedAirChannelMask) 20 | direction = WwiseProperty[float]("Direction", float) 21 | direction_automate = WwiseProperty[bool]("DirectionAutomate", bool) 22 | direction_random = WwiseProperty[float]("DirectionRandom", float) 23 | duration = WwiseProperty[float]("Duration", float) 24 | duration_random = WwiseProperty[float]("DurationRandom", float) 25 | frequency_scale = WwiseProperty[float]("FrequencyScale", float) 26 | frequency_scale_automate = WwiseProperty[bool]("FrequencyScaleAutomate", bool) 27 | frequency_scale_random = WwiseProperty[float]("FrequencyScaleRandom", float) 28 | gain_offset = WwiseProperty[float]("GainOffset", float) 29 | gain_offset_automate = WwiseProperty[bool]("GainOffsetAutomate", bool) 30 | gain_offset_random = WwiseProperty[float]("GainOffsetRandom", float) 31 | gustiness = WwiseProperty[float]("Gustiness", float) 32 | gustiness_automate = WwiseProperty[bool]("GustinessAutomate", bool) 33 | gustiness_random = WwiseProperty[float]("GustinessRandom", float) 34 | max_distance = WwiseProperty[float]("MaxDistance", float) 35 | min_distance = WwiseProperty[float]("MinDistance", float) 36 | playback_rate = WwiseProperty[float]("PlaybackRate", float) 37 | q_factor_scale = WwiseProperty[float]("QFactorScale", float) 38 | q_factor_scale_automate = WwiseProperty[bool]("QFactorScaleAutomate", bool) 39 | q_factor_scale_random = WwiseProperty[float]("QFactorScaleRandom", float) 40 | variability = WwiseProperty[float]("Variability", float) 41 | variability_automate = WwiseProperty[bool]("VariabilityAutomate", bool) 42 | variability_random = WwiseProperty[float]("VariabilityRandom", float) 43 | velocity_dynamic_range = WwiseProperty[float]("VelocityDynamicRange", float) 44 | -------------------------------------------------------------------------------- /pywwise/objects/sources/soundseed_air_woosh.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.enums import ESoundSeedAirChannelMask, ENoiseColour 5 | from pywwise.descriptors import WwiseProperty 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class SoundSeedAirWoosh(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_soundseed_air_woosh.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOURCE_PLUGIN`. 14 | """ 15 | attenuation_roll_of = WwiseProperty[float]("AttenuationRollOff", float) 16 | channel_mask = WwiseProperty[ESoundSeedAirChannelMask]("ChannelMask", ESoundSeedAirChannelMask) 17 | distance_attenuation = WwiseProperty[bool]("DistanceAttenuation", bool) 18 | duration = WwiseProperty[float]("Duration", float) 19 | duration_random = WwiseProperty[float]("DurationRandom", float) 20 | frequency_scale = WwiseProperty[float]("FrequencyScale", float) 21 | frequency_scale_automate = WwiseProperty[bool]("FrequencyScaleAutomate", bool) 22 | frequency_scale_random = WwiseProperty[float]("FrequencyScaleRandom", float) 23 | gain_offset = WwiseProperty[float]("GainOffset", float) 24 | gain_offset_automate = WwiseProperty[bool]("GainOffsetAutomate", bool) 25 | gain_offset_random = WwiseProperty[float]("GainOffsetRandom", float) 26 | min_distance = WwiseProperty[float]("MinDistance", float) 27 | noise_colour = WwiseProperty[ENoiseColour]("NoiseColour", ENoiseColour) 28 | oversampling = WwiseProperty[int]("Oversampling", int) 29 | playback_rate = WwiseProperty[float]("PlaybackRate", float) 30 | q_factor_scale = WwiseProperty[float]("QFactorScale", float) 31 | q_factor_scale_automate = WwiseProperty[bool]("QFactorScaleAutomate", bool) 32 | q_factor_scale_random = WwiseProperty[float]("QFactorScaleRandom", float) 33 | speed = WwiseProperty[float]("Speed", float) 34 | speed_automate = WwiseProperty[bool]("SpeedAutomate", bool) 35 | speed_point_speed_random = WwiseProperty[float]("SpeedPointSpeedRandom", float) 36 | speed_point_time_random = WwiseProperty[float]("SpeedPointTimeRandom", float) 37 | speed_random = WwiseProperty[float]("SpeedRandom", float) 38 | velocity_dynamic_range = WwiseProperty[float]("VelocityDynamicRange", float) 39 | -------------------------------------------------------------------------------- /pywwise/objects/sources/wwise_silence.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class WwiseSilence(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_wwise_silence.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.SOURCE_PLUGIN`. 13 | """ 14 | length = WwiseProperty[float]("Length", float) 15 | length_max = WwiseProperty[float]("LengthMax", float) 16 | length_min = WwiseProperty[float]("LengthMin", float) 17 | -------------------------------------------------------------------------------- /pywwise/objects/sources/wwise_synth_one.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EFrequencyMode, ENoiseColour, ESynthOneOperationMode, ESynthOneWaveform 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseSynthOne(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_wwise_synth_one.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOURCE_PLUGIN`. 14 | """ 15 | base_frequency = WwiseProperty[float]("BaseFrequency", float) 16 | fm_amount = WwiseProperty[float]("FMAmount", float) 17 | frequency_mode = WwiseProperty[EFrequencyMode]("FrequencyMode", EFrequencyMode) 18 | noise_level = WwiseProperty[ENoiseColour]("NoiseLevel", ENoiseColour) 19 | noise_shape = WwiseProperty[float]("NoiseShape", float) 20 | operation_mode = WwiseProperty[ESynthOneOperationMode]("OperationMode", ESynthOneOperationMode) 21 | osc1_invert = WwiseProperty[bool]("Osc1Invert", bool) 22 | osc1_level = WwiseProperty[float]("Osc1Level", float) 23 | osc1_pwm = WwiseProperty[float]("Osc1Pwm", float) 24 | osc1_transpose = WwiseProperty[float]("Osc1Transpose", float) 25 | osc1_waveform = WwiseProperty[ESynthOneWaveform]("Osc1Waveform", ESynthOneWaveform) 26 | osc2_invert = WwiseProperty[bool]("Osc2Invert", bool) 27 | osc2_level = WwiseProperty[float]("Osc2Level", float) 28 | osc2_pwm = WwiseProperty[float]("Osc2Pwm", float) 29 | osc2_transpose = WwiseProperty[float]("Osc2Transpose", float) 30 | osc2_waveform = WwiseProperty[ESynthOneWaveform]("Osc2Waveform", ESynthOneWaveform) 31 | output_level = WwiseProperty[float]("OutputLevel", float) 32 | oversampling = WwiseProperty[bool]("Oversampling", bool) 33 | -------------------------------------------------------------------------------- /pywwise/objects/sources/wwise_tone_generator.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EToneGenChannelMask, EToneGenDurationMode, EToneGenSweepFrequencyType, EToneGenWaveform 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WwiseToneGenerator(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_source_wwise_tone_generator.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOURCE_PLUGIN`. 14 | """ 15 | attack_time = WwiseProperty[float]("AttackTime", float) 16 | channel_mask = WwiseProperty[EToneGenChannelMask]("ChannelMask", EToneGenChannelMask) 17 | decay_time = WwiseProperty[float]("DecayTime", float) 18 | duration_mode = WwiseProperty[EToneGenDurationMode]("DurMode", EToneGenDurationMode) 19 | release_time = WwiseProperty[float]("ReleaseTime", float) 20 | start_frequency = WwiseProperty[float]("StartFreq", float) 21 | start_frequency_random_max = WwiseProperty[float]("StartFreqRandMax", float) 22 | start_frequency_random_min = WwiseProperty[float]("StartFreqRandMin", float) 23 | stop_frequency = WwiseProperty[float]("StopFreq", float) 24 | stop_frequency_random_max = WwiseProperty[float]("StopFreqRandMax", float) 25 | stop_frequency_random_min = WwiseProperty[float]("StopFreqRandMin", float) 26 | sustain_level = WwiseProperty[float]("SustainLevel", float) 27 | sustian_time = WwiseProperty[float]("SustainTime", float) 28 | sweep_frequency = WwiseProperty[float]("SweepFreq", float) 29 | sweep_frequency_type = WwiseProperty[EToneGenSweepFrequencyType]("SweepFreqType", EToneGenSweepFrequencyType) 30 | wave_gain = WwiseProperty[float]("WaveGain", float) 31 | wave_type = WwiseProperty[EToneGenWaveform]("WaveType", EToneGenWaveform) 32 | -------------------------------------------------------------------------------- /pywwise/objects/types/acoustic_texture.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class AcousticTexture(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_acoustictexture.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.ACOUSTIC_TEXTURE`. 14 | """ 15 | absorption_high = WwiseProperty[float]("AbsorptionHigh", float) 16 | absorption_low = WwiseProperty[float]("AbsorptionLow", float) 17 | absorption_mid_high = WwiseProperty[float]("AbsorptionMidHigh", float) 18 | absorption_mid_low = WwiseProperty[float]("AbsorptionMidLow", float) 19 | absorption_offset = WwiseProperty[float]("AbsorptionOffset", float) 20 | colour = WwiseProperty[EColour]("Color", EColour) 21 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 22 | scattering = WwiseProperty[float]("Scattering", float) 23 | -------------------------------------------------------------------------------- /pywwise/objects/types/action.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EActionType, EScope, ESeekType, ESetterType 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.effect import Effect 8 | from pywwise.objects.types.effect_slot import EffectSlot 9 | 10 | 11 | class Action(WwiseObject): 12 | """ 13 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_action.html \n 14 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 15 | the class represented by `EObjectType.ACTION`. 16 | """ 17 | absolute_or_relative = WwiseProperty[ESetterType]("AbsoluteOrRelative", ESetterType) 18 | action_type = WwiseProperty[EActionType]("ActionType", EActionType) 19 | apply_to_dynamic_sequence = WwiseProperty[bool]("ApplyToDynamicSequence", bool) 20 | apply_to_state_transition = WwiseProperty[bool]("ApplyToStateTransition", bool) 21 | bypass_flag = WwiseProperty[bool]("BypassFlag", bool) 22 | bypass_game_parameter_internal_transition = WwiseProperty[bool]("BypassGameParameterInternalTransition", bool) 23 | delay = WwiseProperty[float]("Delay", float) 24 | effect_slot = WwiseProperty[EffectSlot]("EffectSlot", EffectSlot) 25 | fade_in_curve = WwiseProperty[int]("FadeInCurve", int) 26 | fade_out_curve = WwiseProperty[int]("FadeOutCurve", int) 27 | fade_time = WwiseProperty[float]("FadeTime", float) 28 | game_parameter_value = WwiseProperty[float]("GameParameterValue", float) 29 | highpass = WwiseProperty[int]("Highpass", int) 30 | inclusion = WwiseProperty[bool]("Inclusion", bool) 31 | lowpass = WwiseProperty[int]("Lowpass", int) 32 | master_resume = WwiseProperty[bool]("MasterResume", bool) 33 | pause_delayed_resume_action = WwiseProperty[bool]("PauseDelayedResumeAction", bool) 34 | pitch = WwiseProperty[float]("Pitch", float) 35 | probability = WwiseProperty[float]("Probability", float) 36 | resume_state_transition = WwiseProperty[bool]("ResumeStateTransition", bool) 37 | scope = WwiseProperty[EScope]("Scope", EScope) 38 | seek_percent = WwiseProperty[float]("SeekPercent", float) 39 | seek_time = WwiseProperty[float]("SeekTime", float) 40 | seek_to_marker = WwiseProperty[bool]("SeekToMarker", bool) 41 | seek_type = WwiseProperty[ESeekType]("SeekType", ESeekType) 42 | target = WwiseProperty[WwiseObject]("Target", WwiseObject) 43 | target_effect = WwiseProperty[Effect]("TargetEffect", Effect) 44 | volume = WwiseProperty[float]("Volume", float) 45 | -------------------------------------------------------------------------------- /pywwise/objects/types/action_exception.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class ActionException(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_actionexception.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.ACTION_EXCEPTION` 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | target = WwiseProperty[WwiseObject]("Target", WwiseObject) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/attenuation.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class Attenuation(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_attenuation.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.ATTENUATION`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | cone_attenuation = WwiseProperty[float]("ConeAttenuation", float) 18 | cone_high_pass_filter_value = WwiseProperty[int]("ConeHighPassFilterAngle", int) 19 | cone_inner_angle = WwiseProperty[int]("ConeInnerAngle", int) 20 | cone_low_pass_filter_value = WwiseProperty[int]("ConeLowPassFilterAngle", int) 21 | cone_outer_angle = WwiseProperty[int]("ConeOuterAngle", int) 22 | cone_use = WwiseProperty[bool]("ConeUse", bool) 23 | height_spread_enable = WwiseProperty[bool]("HeightSpreadEnable", bool) 24 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 25 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 26 | radius_max = WwiseProperty[float]("RadiusMax", float) 27 | -------------------------------------------------------------------------------- /pywwise/objects/types/audio_device.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.effect_slot import EffectSlot 8 | from pywwise.objects.types.rtpc import Rtpc 9 | 10 | 11 | class AudioDevice(WwiseObject): 12 | """ 13 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_audiodevice.html \n 14 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 15 | the class represented by `EObjectType.AUDIO_DEVICE`. 16 | """ 17 | bypass_effect = WwiseProperty[bool]("BypassEffect", bool) 18 | colour = WwiseProperty[EColour]("Color", EColour) 19 | effects = WwiseProperty[list[EffectSlot]]("Effects", list[EffectSlot]) 20 | inclusion = WwiseProperty[bool]("Inclusion", bool) 21 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 22 | rtpc = WwiseProperty[list[Rtpc]]("RTPC", list[Rtpc]) 23 | -------------------------------------------------------------------------------- /pywwise/objects/types/audio_source.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EFadeShape, EMarkerInputMode, ESpeakerBitMask 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.conversion import Conversion 8 | from pywwise.objects.types.marker import Marker 9 | 10 | 11 | class AudioSource(WwiseObject): 12 | """ 13 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_audiofilesource.html \n 14 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 15 | the class represented by `EObjectType.AUDIO_SOURCE`. 16 | """ 17 | channel_config_override = WwiseProperty[ESpeakerBitMask]("ChannelConfigOverride", ESpeakerBitMask) 18 | colour = WwiseProperty[EColour]("Color", EColour) 19 | conversion = WwiseProperty[Conversion]("Conversion", Conversion) 20 | crossfade_duration = WwiseProperty[float]("CrossfadeDuration", float) 21 | crossfade_shape = WwiseProperty[EFadeShape]("CrossfadeShape", EFadeShape) 22 | fade_in_duration = WwiseProperty[float]("FadeInDuration", float) 23 | fade_in_shape = WwiseProperty[EFadeShape]("FadeInShape", EFadeShape) 24 | fade_out_duration = WwiseProperty[float]("FadeOutDuration", float) 25 | fade_out_shape = WwiseProperty[EFadeShape]("FadeOutShape", EFadeShape) 26 | hdr_envelope = WwiseProperty[float]("HdrEnvelope", float) 27 | loop_begin = WwiseProperty[float]("LoopBegin", float) 28 | loop_end = WwiseProperty[float]("LoopEnd", float) 29 | marker_detection_sensitivity = WwiseProperty[float]("MarkerDetectionSensitivity", float) 30 | marker_input_mode = WwiseProperty[EMarkerInputMode]("MarkerInputMode", EMarkerInputMode) 31 | markers = WwiseProperty[list[Marker]]("Markers", list[Marker]) 32 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 33 | override_conversion = WwiseProperty[bool]("OverrideConversion", bool) 34 | override_wav_loop = WwiseProperty[bool]("OverrideWavLoop", bool) 35 | trim_begin = WwiseProperty[float]("TrimBegin", float) 36 | trim_end = WwiseProperty[float]("TrimEnd", float) 37 | volume_offset = WwiseProperty[float]("VolumeOffset", float) 38 | -------------------------------------------------------------------------------- /pywwise/objects/types/aux_bus.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from typing import Self as _Self 5 | 6 | from pywwise.descriptors import WwiseProperty 7 | from pywwise.enums import (E3DPosition, E3DSpatialization, EBusChannelConfiguration, EColour) 8 | from pywwise.objects.abc import WwiseObject 9 | from pywwise.objects.types.attenuation import Attenuation 10 | from pywwise.objects.types.effect_slot import EffectSlot 11 | from pywwise.objects.types.rtpc import Rtpc 12 | from pywwise.primitives import GUID 13 | 14 | 15 | class AuxBus(WwiseObject): 16 | """ 17 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_auxbus.html \n 18 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 19 | the class represented by `EObjectType.AUX_BUS`. 20 | """ 21 | position_3d = WwiseProperty[E3DPosition]("3DPosition", E3DPosition) 22 | spatialization_3d = WwiseProperty[E3DSpatialization]("3DSpatialization", E3DSpatialization) 23 | attenuation = WwiseProperty[Attenuation]("Attenuation", Attenuation) 24 | attenuation_distance_scaling = WwiseProperty[float]("AttenuationDistanceScaling", float) 25 | bus_channel_config = WwiseProperty[EBusChannelConfiguration]("BusChannelConfig", EBusChannelConfiguration) 26 | bus_volume = WwiseProperty[float]("BusVolume", float) 27 | bypass_all_effects = WwiseProperty[bool]("BypassEffect", bool) 28 | centre_percentage = WwiseProperty[float]("CenterPercentage", float) 29 | colour = WwiseProperty[EColour]("Color", EColour) 30 | effects = WwiseProperty[tuple[EffectSlot, ...]]("Effects", tuple) 31 | enable_attenuation = WwiseProperty[bool]("EnableAttenuation", bool) 32 | enable_diffraction = WwiseProperty[bool]("EnableDiffraction", bool) 33 | game_aux_send_hpf = WwiseProperty[int]("GameAuxSendHPF", int) 34 | game_aux_send_lpf = WwiseProperty[int]("GameAuxSendLPF", int) 35 | game_aux_send_volume = WwiseProperty[float]("GameAuxSendVolume", float) 36 | highpass = WwiseProperty[int]("Highpass", int) 37 | hold_emitter_position_orientation = WwiseProperty[bool]("HoldEmitterPositionOrientation", bool) 38 | hold_listener_orientation = WwiseProperty[bool]("HoldListenerOrientation", bool) 39 | listener_relative_routing = WwiseProperty[bool]("ListenerRelativeRouting", bool) 40 | lowpass = WwiseProperty[int]("Lowpass", int) 41 | metadata = WwiseProperty[GUID]("Metadata", GUID) 42 | output_bus_highpass = WwiseProperty[int]("OutputBusHighpass", int) 43 | output_bus_lowpass = WwiseProperty[int]("OutputBusLowpass", int) 44 | output_bus_volume = WwiseProperty[float]("OutputBusVolume", float) 45 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 46 | pitch = WwiseProperty[int]("Pitch", int) 47 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 48 | reflections_aux_send = WwiseProperty[_Self]("ReflectionsAuxSend", _Self) 49 | reflections_volume = WwiseProperty[float]("ReflectionsVolume", float) 50 | speaker_panning = WwiseProperty[int]("SpeakerPanning", int) 51 | speaker_panning_3d_spatialization_mix = WwiseProperty[int]("SpeakerPanning3DSpatializationMix", int) 52 | use_game_aux_sends = WwiseProperty[bool]("UseGameAuxSends", bool) 53 | user_aux_send_0 = WwiseProperty[_Self]("UserAuxSend0", _Self) 54 | user_aux_send_1 = WwiseProperty[_Self]("UserAuxSend1", _Self) 55 | user_aux_send_2 = WwiseProperty[_Self]("UserAuxSend2", _Self) 56 | user_aux_send_3 = WwiseProperty[_Self]("UserAuxSend3", _Self) 57 | user_aux_send_hpf_0 = WwiseProperty[int]("UserAuxSendHPF0", int) 58 | user_aux_send_hpf_1 = WwiseProperty[int]("UserAuxSendHPF1", int) 59 | user_aux_send_hpf_2 = WwiseProperty[int]("UserAuxSendHPF2", int) 60 | user_aux_send_hpf_3 = WwiseProperty[int]("UserAuxSendHPF3", int) 61 | user_aux_send_lpf_0 = WwiseProperty[int]("UserAuxSendLPF0", int) 62 | user_aux_send_lpf_1 = WwiseProperty[int]("UserAuxSendLPF1", int) 63 | user_aux_send_lpf_2 = WwiseProperty[int]("UserAuxSendLPF2", int) 64 | user_aux_send_lpf_3 = WwiseProperty[int]("UserAuxSendLPF3", int) 65 | user_aux_send_volume_0 = WwiseProperty[float]("UserAuxSendVolume0", float) 66 | user_aux_send_volume_1 = WwiseProperty[float]("UserAuxSendVolume1", float) 67 | user_aux_send_volume_2 = WwiseProperty[float]("UserAuxSendVolume2", float) 68 | user_aux_send_volume_3 = WwiseProperty[float]("UserAuxSendVolume3", float) 69 | voice_volume = WwiseProperty[float]("Volume", float) 70 | -------------------------------------------------------------------------------- /pywwise/objects/types/blend_track.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | from pywwise.objects.types.rtpc import Rtpc 7 | 8 | 9 | class BlendTrack(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_blendtrack.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.BLEND_TRACK`. 14 | """ 15 | enable_cross_fading = WwiseProperty[bool]("EnableCrossFading", bool) 16 | highpass = WwiseProperty[int]("Highpass", int) 17 | layer_cross_fade_control_input = WwiseProperty[Rtpc]("LayerCrossFadeControlInput", Rtpc) 18 | lowpass = WwiseProperty[int]("Lowpass", int) 19 | make_up_gain = WwiseProperty[float]("MakeUpGain", float) 20 | pitch = WwiseProperty[int]("Pitch", int) 21 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 22 | volume = WwiseProperty[float]("Volume", float) 23 | -------------------------------------------------------------------------------- /pywwise/objects/types/control_surface_binding.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EControlSurfaceBindingTargetType 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class ControlSurfaceBinding(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_controlsurfacebinding.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.CONTROL_SURFACE_BINDING`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | hardware_controller_key = WwiseProperty[str]("HardwareControllerKey", str) 17 | object_index_in_view = WwiseProperty[int]("ObjectIndexInView", int) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | target_class_id = WwiseProperty[int]("TargetClassId", int) 20 | target_name = WwiseProperty[str]("TargetName", str) 21 | target_object = WwiseProperty[WwiseObject]("TargetObject", WwiseObject) 22 | target_type = WwiseProperty[EControlSurfaceBindingTargetType]("TargetType", EControlSurfaceBindingTargetType) 23 | -------------------------------------------------------------------------------- /pywwise/objects/types/control_surface_binding_group.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EControlSurfaceBindingGroupType, EControlSurfaceBindingTargetType 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class ControlSurfaceBindingGroup(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_controlsurfacebindinggroup.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.CONTROL_SURFACE_BINDING_GROUP`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | group_type = WwiseProperty[EControlSurfaceBindingGroupType]("GroupType", EControlSurfaceBindingGroupType) 17 | hardware_controller_key = WwiseProperty[str]("HardwareControllerKey", str) 18 | object_index_in_view = WwiseProperty[int]("ObjectIndexInView", int) 19 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 20 | target_class_id = WwiseProperty[int]("TargetClassId", int) 21 | target_name = WwiseProperty[str]("TargetName", str) 22 | target_type = WwiseProperty[EControlSurfaceBindingTargetType]("TargetType", EControlSurfaceBindingTargetType) 23 | -------------------------------------------------------------------------------- /pywwise/objects/types/control_surface_session.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class ControlSurfaceSession(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_controlsurfacesession.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.CONTROL_SURFACE_SESSION`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/conversion.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EChannelConversionSettings, EColour, ESampleRate, ESampleRateConversionQuality 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Conversion(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_conversion.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.CONVERSION`. 14 | """ 15 | allow_channel_upmix = WwiseProperty[bool]("AllowChannelUpmix", bool) 16 | channels = WwiseProperty[EChannelConversionSettings]("Channels", EChannelConversionSettings) 17 | colour = WwiseProperty[EColour]("Color", EColour) 18 | lr_mix = WwiseProperty[float]("LRMix", float) 19 | max_sample_rate = WwiseProperty[ESampleRate]("MaxSampleRate", ESampleRate) 20 | min_sample_rate = WwiseProperty[ESampleRate]("MinSampleRate", ESampleRate) 21 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 22 | remove_dc_offset = WwiseProperty[bool]("RemoveDCOffset", bool) 23 | sr_conversion_quality = WwiseProperty[ESampleRateConversionQuality]( 24 | "SRConversionQuality", ESampleRateConversionQuality) 25 | sample_rate = WwiseProperty[ESampleRate]("SampleRate", ESampleRate) 26 | use_dither = WwiseProperty[bool]("UseDither", bool) 27 | use_filename_marker = WwiseProperty[bool]("UseFilenameMarker", bool) 28 | -------------------------------------------------------------------------------- /pywwise/objects/types/curve.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class Curve(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_curve.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.CURVE`. 13 | """ 14 | flags = WwiseProperty[int]("Flags", int) 15 | -------------------------------------------------------------------------------- /pywwise/objects/types/custom_state.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.abc import WwiseObject 5 | 6 | 7 | class CustomState(WwiseObject): 8 | """ 9 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_customstate.html \n 10 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 11 | the class represented by `EObjectType.CUSTOM_STATE`. 12 | """ 13 | pass # There are no properties, currently. 14 | -------------------------------------------------------------------------------- /pywwise/objects/types/dialogue_event.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EMatchMode 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.multi_switch_entry import MultiSwitchEntry 8 | from pywwise.objects.types.state_group import StateGroup 9 | from pywwise.objects.types.switch_group import SwitchGroup 10 | 11 | 12 | class DialogueEvent(WwiseObject): 13 | """ 14 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_dialogueevent.html \n 15 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 16 | the class represented by `EObjectType.DIALOGUE_EVENT`. 17 | """ 18 | arguments = WwiseProperty[tuple[SwitchGroup | StateGroup, ...]]("Arguments", tuple) 19 | colour = WwiseProperty[EColour]("Color", EColour) 20 | entries = WwiseProperty[tuple[MultiSwitchEntry, ...]]("Entries", tuple) 21 | mode = WwiseProperty[EMatchMode]("Mode", EMatchMode) 22 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 23 | probability = WwiseProperty[int]("Probability", int) 24 | -------------------------------------------------------------------------------- /pywwise/objects/types/effect.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class Effect(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effect.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.EFFECT`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | inclusion = WwiseProperty[bool]("Inclusion", bool) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 20 | -------------------------------------------------------------------------------- /pywwise/objects/types/effect_slot.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | from pywwise.objects.types.effect import Effect 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class EffectSlot(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_effectslot.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.EFFECT_SLOT`. 15 | """ 16 | bypass = WwiseProperty[bool]("Bypass", bool) 17 | effect = WwiseProperty[Effect]("Effect", Effect) 18 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 19 | render = WwiseProperty[bool]("Render", bool) 20 | -------------------------------------------------------------------------------- /pywwise/objects/types/event.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Event(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_event.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.EVENT`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | inclusion = WwiseProperty[bool]("Inclusion", bool) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/external_source.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.abc import WwiseObject 5 | 6 | 7 | class ExternalSource(WwiseObject): 8 | """ 9 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_externalsource.html \n 10 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 11 | the class represented by `EObjectType.EXTERNAL_SOURCE`. 12 | """ 13 | pass # There are no properties, currently. 14 | -------------------------------------------------------------------------------- /pywwise/objects/types/external_source_file.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EExternalAnalysisType, ELoudnessNormalizationType 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.conversion import Conversion 8 | 9 | 10 | class ExternalSourceFile(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_externalsourcefile.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.EXTERNAL_SOURCE_FILE`. 15 | """ 16 | analysis_type = WwiseProperty[EExternalAnalysisType]("AnalysisType", EExternalAnalysisType) 17 | conversion = WwiseProperty[Conversion]("Conversion", Conversion) 18 | loudness_normalization_target = WwiseProperty[float]("LoudnessNormalizationTarget", float) 19 | loudness_normalization_type = WwiseProperty[ELoudnessNormalizationType]( 20 | "LoudnessNormalizationType", ELoudnessNormalizationType) 21 | override_conversion = WwiseProperty[bool]("OverrideConversion", bool) 22 | -------------------------------------------------------------------------------- /pywwise/objects/types/folder.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Folder(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_folder.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.FOLDER`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | inclusion = WwiseProperty[bool]("Inclusion", bool) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/game_parameter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EBuiltInGameParameter, EColour, EInterpolationMode 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class GameParameter(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_gameparameter.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.GAME_PARAMETER`. 14 | """ 15 | bind_to_built_in_param = WwiseProperty[EBuiltInGameParameter]("BindToBuiltInParam", EBuiltInGameParameter) 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | filter_time_down = WwiseProperty[float]("FilterTimeDown", float) 18 | filter_time_up = WwiseProperty[float]("FilterTimeUp", float) 19 | initial_value = WwiseProperty[float]("InitialValue", float) 20 | max = WwiseProperty[float]("Max", float) 21 | min = WwiseProperty[float]("Min", float) 22 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 23 | rtpc_ramping = WwiseProperty[EInterpolationMode]("RTPCRamping", EInterpolationMode) 24 | simulation_value = WwiseProperty[float]("SimulationValue", float) 25 | slew_rate_down = WwiseProperty[float]("SlewRateDown", float) 26 | slew_rate_up = WwiseProperty[float]("SlewRateUp", float) 27 | -------------------------------------------------------------------------------- /pywwise/objects/types/language.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class Language(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_language.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.LANGUAGE`. 13 | """ 14 | volume_offset = WwiseProperty[float]("VolumeOffset", float) 15 | -------------------------------------------------------------------------------- /pywwise/objects/types/marker.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Marker(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_marker.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MARKER`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | label = WwiseProperty[str]("Label", str) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | time = WwiseProperty[float]("Time", float) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/metadata.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class Metadata(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_metadata.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.METADATA`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | inclusion = WwiseProperty[bool]("Inclusion", bool) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 20 | -------------------------------------------------------------------------------- /pywwise/objects/types/midi_file_source.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.abc import WwiseObject 5 | 6 | 7 | class MidiFileSource(WwiseObject): 8 | """ 9 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_midifilesource.html \n 10 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 11 | the class represented by `EObjectType.MIDI_FILE_SOURCE`. 12 | """ 13 | pass # There are no properties, currently. 14 | -------------------------------------------------------------------------------- /pywwise/objects/types/midi_parameter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class MidiParameter(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_midiparameter.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.MIDI_PARAMETER`. 13 | """ 14 | simulation_value = WwiseProperty[float]("SimulationValue", float) 15 | -------------------------------------------------------------------------------- /pywwise/objects/types/mixing_session.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MixingSession(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_mixingsession.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MIXING_SESSION`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/modifier.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class Modifier(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_modifier.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.MODIFIER`. 13 | """ 14 | enabled = WwiseProperty[bool]("Enabled", bool) 15 | max = WwiseProperty[float]("Max", float) 16 | min = WwiseProperty[float]("Min", float) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/modulator_envelope.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import TYPE_CHECKING 7 | 8 | if TYPE_CHECKING: 9 | from pywwise.objects.types.rtpc import Rtpc 10 | 11 | from pywwise.descriptors import WwiseProperty 12 | from pywwise.enums import EColour, EEnvelopeTriggerOn, EModulatorScopeLimited 13 | from pywwise.objects.abc import WwiseObject 14 | 15 | 16 | class ModulatorEnvelope(WwiseObject): 17 | """ 18 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_modulatorenvelope.html \n 19 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 20 | the class represented by `EObjectType.MODULATOR_ENVELOPE`. 21 | """ 22 | colour = WwiseProperty[EColour]("Color", EColour) 23 | envelope_attack_curve = WwiseProperty[float]("EnvelopeAttackCurve", float) 24 | envelope_attack_time = WwiseProperty[float]("EnvelopeAttackTime", float) 25 | envelope_auto_release = WwiseProperty[bool]("EnvelopeAutoRelease", bool) 26 | envelope_decay_time = WwiseProperty[float]("EnvelopeDecayTime", float) 27 | envelope_release_time = WwiseProperty[float]("EnvelopeReleaseTime", float) 28 | envelope_stop_playback = WwiseProperty[bool]("EnvelopeStopPlayback", bool) 29 | envelope_sustain_level = WwiseProperty[float]("EnvelopeSustainLevel", float) 30 | envelope_sustain_time = WwiseProperty[float]("EnvelopeSustainTime", float) 31 | envelope_trigger_on = WwiseProperty[EEnvelopeTriggerOn]("EnvelopeTriggerOn", EEnvelopeTriggerOn) 32 | modulator_scope = WwiseProperty[EModulatorScopeLimited]("ModulatorScope", EModulatorScopeLimited) 33 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 34 | rtpc: WwiseProperty[tuple[Rtpc, ...]] = WwiseProperty("RTPC", tuple) # Using `:` to avoid circular imports. 35 | -------------------------------------------------------------------------------- /pywwise/objects/types/modulator_lfo.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import TYPE_CHECKING 7 | 8 | if TYPE_CHECKING: 9 | from pywwise.objects.types.rtpc import Rtpc 10 | 11 | from pywwise.descriptors import WwiseProperty 12 | from pywwise.enums import EColour, EModulatorScope, EWaveformInt 13 | from pywwise.objects.abc import WwiseObject 14 | 15 | 16 | class ModulatorLfo(WwiseObject): 17 | """ 18 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_modulatorlfo.html \n 19 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 20 | the class represented by `EObjectType.MODULATOR_LFO`. 21 | """ 22 | colour = WwiseProperty[EColour]("Color", EColour) 23 | lfo_attack = WwiseProperty[float]("LfoAttack", float) 24 | lfo_depth = WwiseProperty[float]("LfoDepth", float) 25 | lfo_frequency = WwiseProperty[float]("LfoFrequency", float) 26 | lfo_initial_phase = WwiseProperty[float]("LfoInitialPhase", float) 27 | lfo_pwm = WwiseProperty[float]("LfoPWM", float) 28 | lfo_smoothing = WwiseProperty[float]("LfoSmoothing", float) 29 | lfo_waveform = WwiseProperty[EWaveformInt]("LfoWaveform", EWaveformInt) 30 | modulator_scope = WwiseProperty[EModulatorScope]("ModulatorScope", EModulatorScope) 31 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 32 | rtpc: WwiseProperty[tuple[Rtpc, ...]] = WwiseProperty("RTPC", tuple) # Using `:` to avoid circular imports. 33 | -------------------------------------------------------------------------------- /pywwise/objects/types/modulator_time.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import TYPE_CHECKING 7 | 8 | if TYPE_CHECKING: 9 | from pywwise.objects.types.rtpc import Rtpc 10 | 11 | from pywwise.descriptors import WwiseProperty 12 | from pywwise.enums import EColour, EEnvelopeTriggerOn, EModulatorScopeLimited 13 | from pywwise.objects.abc import WwiseObject 14 | 15 | 16 | class ModulatorTime(WwiseObject): 17 | """ 18 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_modulatortime.html \n 19 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 20 | the class represented by `EObjectType.MODULATOR_TIME`. 21 | """ 22 | colour = WwiseProperty[EColour]("Color", EColour) 23 | envelope_stop_playback = WwiseProperty[bool]("EnvelopeStopPlayback", bool) 24 | envelope_trigger_on = WwiseProperty[EEnvelopeTriggerOn]("EnvelopeTriggerOn", EEnvelopeTriggerOn) 25 | modulator_scope = WwiseProperty[EModulatorScopeLimited]("ModulatorScope", EModulatorScopeLimited) 26 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 27 | rtpc: WwiseProperty[tuple[Rtpc, ...]] = WwiseProperty("RTPC", tuple) # Using `:` to avoid circular imports. 28 | time_mod_duration = WwiseProperty[float]("TimeModDuration", float) 29 | time_mod_initial_delay = WwiseProperty[float]("TimeModInitialDelay", float) 30 | time_mod_loops = WwiseProperty[int]("TimeModLoops", int) 31 | time_mod_playback_rate = WwiseProperty[float]("TimeModPlaybackRate", float) 32 | -------------------------------------------------------------------------------- /pywwise/objects/types/multi_switch_entry.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from typing import Union as _Union 5 | 6 | from pywwise.descriptors import WwiseProperty 7 | from pywwise.objects.abc import WwiseObject 8 | from pywwise.objects.types.blend_container import BlendContainer 9 | from pywwise.objects.types.music_playlist_container import MusicPlaylistContainer 10 | from pywwise.objects.types.music_segment import MusicSegment 11 | from pywwise.objects.types.music_switch_container import MusicSwitchContainer 12 | from pywwise.objects.types.random_sequence_container import RandomSequenceContainer 13 | from pywwise.objects.types.sound import Sound 14 | from pywwise.objects.types.state import State 15 | from pywwise.objects.types.state_group import StateGroup 16 | from pywwise.objects.types.switch import Switch 17 | from pywwise.objects.types.switch_container import SwitchContainer 18 | from pywwise.objects.types.switch_group import SwitchGroup 19 | 20 | _AudioNodeType = _Union[ 21 | RandomSequenceContainer, SwitchContainer, BlendContainer, Sound, MusicPlaylistContainer, MusicSegment, 22 | MusicSwitchContainer] 23 | 24 | _AudioNodeTypeTuple = ( 25 | RandomSequenceContainer, SwitchContainer, BlendContainer, Sound, MusicPlaylistContainer, MusicSegment, 26 | MusicSwitchContainer) 27 | 28 | 29 | class MultiSwitchEntry(WwiseObject): 30 | """ 31 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_multiswitchentry.html \n 32 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 33 | the class represented by `EObjectType.MULTI_SWITCH_ENTRY`. 34 | """ 35 | audio_node = WwiseProperty[_AudioNodeType]("AudioNode", _AudioNodeTypeTuple) 36 | entry_path = WwiseProperty[tuple[SwitchGroup | Switch | StateGroup | State, ...]]("EntryPath", tuple) 37 | probability = WwiseProperty[int]("Probability", int) 38 | weight = WwiseProperty[int]("Weight", int) 39 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_clip.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EFadeMode, EFadeShape 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MusicClip(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musicclip.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_CLIP`. 14 | """ 15 | begin_trim_offset = WwiseProperty[float]("BeginTrimOffset", float) 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | end_trim_offset = WwiseProperty[float]("EndTrimOffset", float) 18 | fade_in_duration = WwiseProperty[float]("FadeInDuration", float) 19 | fade_in_mode = WwiseProperty[EFadeMode]("FadeInDuration", EFadeMode) 20 | fade_in_shape = WwiseProperty[EFadeShape]("FadeInShape", EFadeShape) 21 | fade_out_duration = WwiseProperty[float]("FadeOutDuration", float) 22 | fade_out_mode = WwiseProperty[EFadeMode]("FadeOutMode", EFadeMode) 23 | fade_out_shape = WwiseProperty[EFadeShape]("FadeOutShape", EFadeShape) 24 | highpass = WwiseProperty[int]("Highpass", int) 25 | lowpass = WwiseProperty[int]("Lowpass", int) 26 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 27 | play_at = WwiseProperty[float]("PlayAt", float) 28 | volume = WwiseProperty[float]("Volume", float) 29 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_clip_midi.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MusicClipMidi(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musicclipmidi.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_CLIP_MIDI`. 14 | """ 15 | begin_trim_offset = WwiseProperty[float]("BeginTrimOffset", float) 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | end_trim_offset = WwiseProperty[float]("EndTrimOffset", float) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | play_at = WwiseProperty[float]("PlayAt", float) 20 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_cue.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EMusicCueType 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MusicCue(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musiccue.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_CUE`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | cue_type = WwiseProperty[EMusicCueType]("CueType", EMusicCueType) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | time_ms = WwiseProperty[float]("TimeMs", float) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_event_cue.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | from pywwise.objects.types import Event 7 | 8 | 9 | class MusicEventCue(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musiceventcue.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_EVENT_CUE`. 14 | """ 15 | play_at = WwiseProperty[float]("PlayAt", float) 16 | post_event_target = WwiseProperty[Event]("PostEventTarget", Event) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_fade.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EFadeType, EMusicFadeShape 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MusicFade(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musicfade.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_FADE`. 14 | """ 15 | fade_curve = WwiseProperty[EMusicFadeShape]("FadeCurve", EMusicFadeShape) 16 | fade_offset = WwiseProperty[float]("FadeOffset", float) 17 | fade_time = WwiseProperty[float]("FadeTime", float) 18 | fade_type = WwiseProperty[EFadeType]("FadeType", EFadeType) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_playlist_item.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EMusicPlaylistItemType, EPlaylistMode, ERandomType 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.music_segment import MusicSegment 8 | 9 | 10 | class MusicPlaylistItem(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musicplaylistitem.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.MUSIC_PLAYLIST_ITEM`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | loop_count = WwiseProperty[int]("LoopCount", int) 18 | normal_or_shuffle = WwiseProperty[ERandomType]("NormalOrShuffle", ERandomType) 19 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 20 | play_mode = WwiseProperty[EPlaylistMode]("PlayMode", EPlaylistMode) 21 | playlist_item_type = WwiseProperty[EMusicPlaylistItemType]("PlaylistItemType", EMusicPlaylistItemType) 22 | random_avoid_repeating_count = WwiseProperty[int]("RandomAvoidRepeatingCount", int) 23 | segment = WwiseProperty[MusicSegment]("Segment", MusicSegment) 24 | weight = WwiseProperty[float]("Weight", float) 25 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_stinger.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import TYPE_CHECKING as _TYPE_CHECKING 7 | 8 | if _TYPE_CHECKING: 9 | from pywwise.objects.types.music_segment import MusicSegment 10 | 11 | from pywwise.descriptors import WwiseProperty 12 | from pywwise.enums import EColour, EMusicSegmentPlayPoint 13 | from pywwise.objects.abc import WwiseObject 14 | from pywwise.objects.types.trigger import Trigger 15 | 16 | 17 | class MusicStinger(WwiseObject): 18 | """ 19 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musicstinger.html \n 20 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 21 | the class represented by `EObjectType.MUSIC_STINGER`. 22 | """ 23 | colour = WwiseProperty[EColour]("Color", EColour) 24 | custom_cue_match_name = WwiseProperty[str]("CustomCueMatchName", str) 25 | dont_play_again_time = WwiseProperty[float]("DontPlayAgainTime", float) 26 | num_segment_advance = WwiseProperty[bool]("NumSegmentAdvance", bool) 27 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 28 | play_segment_at = WwiseProperty[EMusicSegmentPlayPoint]("PlaySegmentAt", EMusicSegmentPlayPoint) 29 | segment: WwiseProperty[MusicSegment] # Injected via __init__ 30 | trigger = WwiseProperty[Trigger]("Trigger", Trigger) 31 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_track_sequence.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, EMusicClipType, ESwitchOrState 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class MusicTrackSequence(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musictracksequence.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.MUSIC_TRACK_SEQUENCE`. 14 | """ 15 | clips = WwiseProperty[tuple[EMusicClipType, ...]]("Clips", tuple) 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | track_sequence_switch = WwiseProperty[ESwitchOrState]("TrackSequenceSwitch", ESwitchOrState) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/music_transition.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from __future__ import annotations 5 | 6 | from typing import TYPE_CHECKING, Union as _Union 7 | 8 | if TYPE_CHECKING: 9 | from pywwise.objects.types.multi_switch_entry import MultiSwitchEntry 10 | 11 | from pywwise.descriptors import WwiseProperty 12 | from pywwise.enums import (EColour, ECustomCueJumpMatchMode, EDestinationContextType, EMusicDestinationJumpTo, 13 | EMusicDestinationSyncTo, EMusicSourceExitPoint) 14 | from pywwise.objects.abc import WwiseObject 15 | from pywwise.objects.types.music_playlist_container import MusicPlaylistContainer 16 | from pywwise.objects.types.music_segment import MusicSegment 17 | from pywwise.objects.types.music_switch_container import MusicSwitchContainer 18 | from pywwise.objects.types.music_track import MusicTrack 19 | 20 | _InteractiveMusicType = _Union[MusicPlaylistContainer, MusicSegment, MusicSwitchContainer, MusicTrack] 21 | 22 | _InteractiveMusicTypeTuple = (MusicPlaylistContainer, MusicSegment, MusicSwitchContainer, MusicTrack) 23 | 24 | 25 | class MusicTransition(WwiseObject): 26 | """ 27 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_musictransition.html \n 28 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 29 | the class represented by `EObjectType.MUSIC_TRANSITION`. 30 | """ 31 | colour = WwiseProperty[EColour]("Color", EColour) 32 | destination_context_object = WwiseProperty[_InteractiveMusicType]("DestinationContextObject", 33 | _InteractiveMusicTypeTuple) 34 | destination_context_type = WwiseProperty[EDestinationContextType]("DestinationContextType", EDestinationContextType) 35 | destination_jump_position_preset = WwiseProperty[EMusicDestinationSyncTo]( 36 | "DestinationJumpPositionPreset", EMusicDestinationSyncTo) 37 | destination_playlist_jump_to = WwiseProperty[EMusicDestinationJumpTo]("DestinationPlaylistJumpTo", 38 | EMusicDestinationJumpTo) 39 | enable_destination_fade_in = WwiseProperty[bool]("EnableDestinationFadeIn", bool) 40 | enable_source_fade_out = WwiseProperty[bool]("EnableSourceFadeOut", bool) 41 | enable_transition_fade_in = WwiseProperty[bool]("EnableTransitionFadeIn", bool) 42 | enable_transition_fade_out = WwiseProperty[bool]("EnableTransitionFadeOut", bool) 43 | entries: WwiseProperty[tuple[MultiSwitchEntry, ...]] = WwiseProperty( 44 | "Entries", tuple) # Using `:` to avoid circular imports. 45 | exit_source_at = WwiseProperty[EMusicSourceExitPoint]("ExitSourceAt", EMusicSourceExitPoint) 46 | exit_source_custom_cue_match_name = WwiseProperty[str]("ExitSourceCustomCueMatchName", str) 47 | is_folder = WwiseProperty[bool]("IsFolder", bool) 48 | jump_to_custom_cue_match_mode = WwiseProperty[ECustomCueJumpMatchMode]( 49 | "JumpToCustomCueMatchMode", ECustomCueJumpMatchMode) 50 | jump_to_custom_cue_match_name = WwiseProperty[str]("jumpToCustomCueMatchName", str) 51 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 52 | play_destination_pre_entry = WwiseProperty[bool]("PlayDestinationPreEntry", bool) 53 | play_post_exit = WwiseProperty[bool]("PlayPostExit", bool) 54 | play_transition_post_Exit = WwiseProperty[bool]("PlayTransitionPostExit", bool) 55 | play_transition_pre_entry = WwiseProperty[bool]("PlayTransitionPreEntry", bool) 56 | source_context_object = WwiseProperty[_InteractiveMusicType]("SourceContextObject", _InteractiveMusicTypeTuple) 57 | source_context_type = WwiseProperty[EDestinationContextType]("SourceContextType", EDestinationContextType) 58 | use_transition_object = WwiseProperty[bool]("UseTransitionObject", bool) 59 | -------------------------------------------------------------------------------- /pywwise/objects/types/object_setting_assoc.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class ObjectSettingAssoc(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_objectsettingassoc.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.OBJECT_SETTING_ASSOC`. 13 | """ 14 | continue_play = WwiseProperty[bool]("ContinuePlay", bool) 15 | fade_in_time = WwiseProperty[float]("FadeInTime", float) 16 | fade_out_time = WwiseProperty[float]("FadeOutTime", float) 17 | first_occurrence_only = WwiseProperty[bool]("FirstOccurenceOnly", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/panner.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | from pywwise.objects.types.rtpc import Rtpc 7 | 8 | 9 | class Panner(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_panner.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.PANNER`. 14 | """ 15 | pan_x = WwiseProperty[float]("PanX", float) 16 | pan_y = WwiseProperty[float]("PanY", float) 17 | pan_z = WwiseProperty[float]("PanZ", float) 18 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/path_2d.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class Path2D(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_path2d.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.PATH_2D`. 13 | """ 14 | append_offset = WwiseProperty[int]("AppendOffset", int) 15 | duration = WwiseProperty[int]("Duration", int) 16 | flags = WwiseProperty[int]("Flags", int) 17 | linear_time = WwiseProperty[bool]("LinearTime", bool) 18 | random_x = WwiseProperty[float]("RandomX", float) 19 | random_y = WwiseProperty[float]("RandomY", float) 20 | random_z = WwiseProperty[float]("RandomZ", float) 21 | -------------------------------------------------------------------------------- /pywwise/objects/types/platform.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.objects.abc import WwiseObject 5 | 6 | 7 | class Platform(WwiseObject): 8 | """ 9 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_platform.html \n 10 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 11 | the class represented by `EObjectType.PLATFORM`. 12 | """ 13 | pass # There are no properties, currently. 14 | -------------------------------------------------------------------------------- /pywwise/objects/types/plugin_data_source.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.objects.abc import WwiseObject 6 | 7 | 8 | class PluginDataSource(WwiseObject): 9 | """ 10 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_plugindatasource.html \n 11 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 12 | the class represented by `EObjectType.PLUGIN_DATA_SOURCE`. 13 | """ 14 | data_file_name = WwiseProperty[str]("DataFileName", str) 15 | -------------------------------------------------------------------------------- /pywwise/objects/types/position.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EMechanismPlayMode, ERandomOrSequence 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class Position(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_position.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.POSITION`. 15 | """ 16 | new_path_for_each_sound = WwiseProperty[bool]("NewPathForEachSound", bool) 17 | pan_x = WwiseProperty[float]("PanX", float) 18 | pan_y = WwiseProperty[float]("PanY", float) 19 | pan_z = WwiseProperty[float]("PanZ", float) 20 | play_mechanism_loop = WwiseProperty[bool]("PlayMechanismLoop", bool) 21 | play_mechanism_random_or_sequence = WwiseProperty[ERandomOrSequence]( 22 | "PlayMechanismRandomOrSequence", ERandomOrSequence) 23 | play_mechanism_step_or_continuous = WwiseProperty[EMechanismPlayMode]("PlayMechanismStepOrContinuous", EMechanismPlayMode) 24 | play_mechanism_transition_time = WwiseProperty[float]("PlayMechanismTransitionTime", float) 25 | play_mechanism_transition_use = WwiseProperty[bool]("PlayMechanismTransitionUse", bool) 26 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 27 | -------------------------------------------------------------------------------- /pywwise/objects/types/query.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour, ELogicalOperator, EObjectTypeQuery, EPlatformOption 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Query(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_query.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.QUERY`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | logical_operator = WwiseProperty[ELogicalOperator]("LogicalOperator", ELogicalOperator) 17 | object_type = WwiseProperty[EObjectTypeQuery]("ObjectType", EObjectTypeQuery) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | platform = WwiseProperty[EPlatformOption]("Platform", EPlatformOption) 20 | start_object = WwiseProperty[WwiseObject]("StartObject", WwiseObject) 21 | waql = WwiseProperty[str]("WAQL", str) 22 | -------------------------------------------------------------------------------- /pywwise/objects/types/rtpc.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from typing import Union as _Union 5 | 6 | from pywwise.descriptors import WwiseProperty 7 | from pywwise.enums import EColour 8 | from pywwise.objects.abc import WwiseObject 9 | from pywwise.objects.types.curve import Curve 10 | from pywwise.objects.types.game_parameter import GameParameter 11 | from pywwise.objects.types.midi_parameter import MidiParameter 12 | from pywwise.objects.types.modulator_envelope import ModulatorEnvelope 13 | from pywwise.objects.types.modulator_lfo import ModulatorLfo 14 | from pywwise.objects.types.modulator_time import ModulatorTime 15 | 16 | _ControlInputType = _Union[ModulatorLfo, ModulatorEnvelope, ModulatorTime, GameParameter, MidiParameter] 17 | 18 | _ControlInputTypeTuple = (ModulatorLfo, ModulatorEnvelope, ModulatorTime, GameParameter, MidiParameter) 19 | 20 | 21 | class Rtpc(WwiseObject): 22 | """ 23 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_rtpc.html \n 24 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 25 | the class represented by `EObjectType.RTPC`. 26 | """ 27 | colour = WwiseProperty[EColour]("Color", EColour) 28 | control_input = WwiseProperty[_ControlInputType]("ControlInput", _ControlInputTypeTuple) 29 | curve = WwiseProperty[Curve]("Curve", Curve) 30 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 31 | property_name = WwiseProperty[str]("PropertyName", str) 32 | -------------------------------------------------------------------------------- /pywwise/objects/types/sound_bank.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class SoundBank(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_soundbank.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOUND_BANK`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | fill = WwiseProperty[bool]("Fill", bool) 17 | maximum = WwiseProperty[int]("Maximum", int) 18 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/soundcaster_session.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class SoundcasterSession(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_soundcastersession.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SOUNDCASTER_SESSION`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/source_plugin.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.rtpc import Rtpc 8 | 9 | 10 | class SourcePlugin(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_sourceplugin.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.SOURCE_PLUGIN`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | rtpc = WwiseProperty[tuple[Rtpc, ...]]("RTPC", tuple) 19 | -------------------------------------------------------------------------------- /pywwise/objects/types/state.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | 5 | from pywwise.descriptors import WwiseProperty 6 | from pywwise.enums import EColour 7 | from pywwise.objects.abc import WwiseObject 8 | 9 | 10 | class State(WwiseObject): 11 | """ 12 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_state.html \n 13 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 14 | the class represented by `EObjectType.STATE`. 15 | """ 16 | colour = WwiseProperty[EColour]("Color", EColour) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/state_group.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class StateGroup(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_stategroup.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.STATE_GROUP`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | default_transition_time = WwiseProperty[float]("DefaultTransitionTime", float) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/switch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Switch(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_switch.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SWITCH`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/switch_group.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class SwitchGroup(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_switchgroup.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.SWITCH_GROUP`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | use_game_parameter = WwiseProperty[bool]("UseGameParameter", bool) 18 | -------------------------------------------------------------------------------- /pywwise/objects/types/trigger.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class Trigger(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_trigger.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.TRIGGER`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 17 | -------------------------------------------------------------------------------- /pywwise/objects/types/user_project_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EActionNamePosition, ECaseStyleSimple, ESoundBankDefinitionFormat 6 | from pywwise.objects.abc import WwiseObject 7 | from pywwise.objects.types.conversion import Conversion 8 | from pywwise.primitives import ProjectPath 9 | 10 | 11 | class UserProjectSettings(WwiseObject): 12 | """ 13 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_userprojectsettings.html \n 14 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 15 | the class represented by `EObjectType.USER_PROJECT_SETTINGS`. 16 | """ 17 | auto_sound_bank_all_events = WwiseProperty[bool]("AutoSoundBankAllEvents", bool) 18 | auto_sound_bank_enabled = WwiseProperty[bool]("AutoSoundBankEnabled", bool) 19 | conversion = WwiseProperty[Conversion]("Conversion", Conversion) 20 | convert_external_sources = WwiseProperty[bool]("ConvertExternalSources", bool) 21 | copy_loose_streamed_media = WwiseProperty[bool]("CopyLooseStreamedMedia", bool) 22 | default_sound_volume = WwiseProperty[float]("DefaultSoundVolume", float) 23 | event_action_name_position = WwiseProperty[EActionNamePosition]("EventActionNamePosition", EActionNamePosition) 24 | event_creation_settings_override = WwiseProperty[bool]("EventCreationSettingsOverride", bool) 25 | event_name_case_type = WwiseProperty[ECaseStyleSimple]("EventNameCaseType", ECaseStyleSimple) 26 | event_name_modify_case = WwiseProperty[bool]("EventNameModifyCase", bool) 27 | external_sources_input_path = WwiseProperty[ProjectPath]("ExternalSourcesInputPath", ProjectPath) 28 | external_sources_output_path = WwiseProperty[ProjectPath]("ExternalSourcesOutputPath", ProjectPath) 29 | generate_main_sound_bank = WwiseProperty[bool]("GenerateMainSoundBank", bool) 30 | generate_multiple_banks = WwiseProperty[bool]("GenerateMultipleBanks", bool) 31 | generate_sound_bank_json = WwiseProperty[bool]("GenerateSoundBankJSON", bool) 32 | generate_sound_bank_xml = WwiseProperty[bool]("GenerateSoundBankXML", bool) 33 | media_auto_bank_sub_folders = WwiseProperty[bool]("MediaAutoBankSubFolders", bool) 34 | override_conversion = WwiseProperty[bool]("OverrideConversion", bool) 35 | post_generate_step_user_override = WwiseProperty[bool]("PostGenerateStepUserOverride", bool) 36 | pre_generate_step_user_override = WwiseProperty[bool]("PreGenerateStepUserOverride", bool) 37 | remove_unused_generated_files = WwiseProperty[bool]("RemoveUnusedGeneratedFiles", bool) 38 | settings_user_override = WwiseProperty[bool]("SettingsUserOverride", bool) 39 | sound_bank_allow_exceeding_sb = WwiseProperty[bool]("SoundBankAllowExceedingSB", bool) 40 | sound_bank_definition_file_format = WwiseProperty[ESoundBankDefinitionFormat]("SoundBankDefinitionFileFormat", 41 | ESoundBankDefinitionFormat) 42 | sound_bank_generate_definition_file = WwiseProperty[bool]("SoundBankGenerateDefinitionFile", bool) 43 | sound_bank_generate_estimated_duration = WwiseProperty[bool]("SoundBankGenerateEstimatedDuration", bool) 44 | sound_bank_generate_header_file = WwiseProperty[bool]("SoundBankGenerateHeaderFile", bool) 45 | sound_bank_generate_max_attenuation_info = WwiseProperty[bool]("SoundBankGenerateMaxAttenuationInfo", bool) 46 | sound_bank_generate_print_colour = WwiseProperty[bool]("SoundBankGeneratePrintColor", bool) 47 | sound_bank_generate_print_guid = WwiseProperty[bool]("SoundBankGeneratePrintGUID", bool) 48 | sound_bank_generate_print_path = WwiseProperty[bool]("SoundBankGeneratePrintPath", bool) 49 | sound_bank_generate_readable_file = WwiseProperty[bool]("SoundBankGenerateReadableFile", bool) 50 | sound_bank_header_file_path = WwiseProperty[ProjectPath]("SoundBankHeaderFilePath", ProjectPath) 51 | sound_bank_include_soundbank_names_strings = WwiseProperty[bool]("SoundBankIncludeSoundbankNamesStrings", bool) 52 | sound_bank_paths = WwiseProperty[str]("SoundBankPaths", str) 53 | sound_bank_post_generate_custom_cmd_description = WwiseProperty[str]("SoundBankPostGenerateCustomCmdDescription", 54 | str) 55 | sound_bank_post_generate_custom_cmd_lines = WwiseProperty[str]("SoundBankPostGenerateCustomCmdLines", str) 56 | sound_bank_pre_generate_custom_cmd_description = WwiseProperty[str]("SoundBankPreGenerateCustomCmdDescription", str) 57 | sound_bank_pre_generate_custom_cmd_lines = WwiseProperty[str]("SoundBankPreGenerateCustomCmdLines", str) 58 | sound_bank_update_audio_files = WwiseProperty[bool]("SoundBankUpdateAudioFiles", bool) 59 | source_control_generated_files = WwiseProperty[bool]("SourceControlGeneratedFiles", bool) 60 | use_action_name_for_event = WwiseProperty[bool]("UseActionNameForEvent", bool) 61 | -------------------------------------------------------------------------------- /pywwise/objects/types/work_unit.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.descriptors import WwiseProperty 5 | from pywwise.enums import EColour 6 | from pywwise.objects.abc import WwiseObject 7 | 8 | 9 | class WorkUnit(WwiseObject): 10 | """ 11 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=wwiseobject_workunit.html \n 12 | A class serving as an interface for getting/setting properties on Wwise objects. This type specifically targets 13 | the class represented by `EObjectType.WORK_UNIT`. 14 | """ 15 | colour = WwiseProperty[EColour]("Color", EColour) 16 | inclusion = WwiseProperty[bool]("Inclusion", bool) 17 | override_colour = WwiseProperty[bool]("OverrideColor", bool) 18 | -------------------------------------------------------------------------------- /pywwise/waapi/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak import Ak, WwiseConnection 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.ak import Ak, WwiseConnection 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/ak.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from typing import Self as _Self, TypeAlias as _TypeAlias 5 | 6 | from waapi import CallbackExecutor, SequentialThreadExecutor, WaapiClient as _WaapiClient 7 | 8 | from pywwise.aliases import ListOrTuple 9 | from pywwise.structs import WwiseObjectWatch 10 | from pywwise.waapi.ak.soundengine import SoundEngine as _SoundEngine 11 | from pywwise.waapi.ak.wwise import Wwise as _Wwise 12 | 13 | 14 | class Ak: 15 | """ak""" 16 | 17 | _connections = list[_Self]() 18 | """List of all active connections to Wwise.""" 19 | 20 | def __init__(self, url: str = "ws://127.0.0.1:8080/waapi", allow_exception: bool = False, 21 | callback_executor: CallbackExecutor = SequentialThreadExecutor, 22 | is_debug_build: bool = False, is_console_instance: bool = False, 23 | watch_list: ListOrTuple[WwiseObjectWatch] = ()): 24 | """ 25 | Constructor. 26 | :param url: URL of the Wwise Authoring API WAMP server, defaults to `ws://127.0.0.1:8080/waapi`. 27 | :param allow_exception: Allow errors on call and subscribe to throw an exception. Default is False. 28 | :param callback_executor: Executor strategy for event callbacks. 29 | :param is_debug_build: Should be set to true if the instance of Wwise is a debug build and debug-only. 30 | :param is_console_instance: Should be set to true if the instance of Wwise is running in a console window. 31 | functions/topics are required. 32 | :param watch_list: A tuple of `WwiseObjectWatch` instances. This will be used to set up the 33 | `ak.wwise.core.object.property_changed` event. 34 | """ 35 | self._client = _WaapiClient(url, allow_exception, callback_executor) 36 | self.soundengine = _SoundEngine(self._client) 37 | self.wwise = _Wwise(self._client, is_debug_build, is_console_instance, watch_list) 38 | self._connections.append(self) 39 | 40 | def __del__(self): 41 | """Disconnect, then delete this connection object.""" 42 | if self.is_connected(): 43 | self.disconnect() 44 | 45 | def __enter__(self) -> _Self: 46 | """ 47 | Enter the context (re: `with` statement). 48 | :return: This instance of the `Ak` class. 49 | """ 50 | return self 51 | 52 | def __exit__(self, exc_type, exc_value, traceback) -> bool: 53 | """ 54 | Exit the context (re: `with` statement). 55 | :param exc_type: The exception type, if any. 56 | :param exc_value: The exception value, if any. 57 | :param traceback: The traceback, if any exception(s) were raised. 58 | :return: Whether an exception was raised. 59 | """ 60 | if self.is_connected(): 61 | self._client.disconnect() 62 | return bool(exc_type) 63 | 64 | @classmethod 65 | def get_connections(cls) -> tuple[_Self, ...]: 66 | """ 67 | Get all active connections to Wwise. Intended only for internal use or debugging. Avoid using this function 68 | in your logic. If you need to check if this connection is ative, use **is_connected** instead, or **disconnect** 69 | if you are trying to delete this connection. 70 | :return: The currently active connections to Wwise, in a `tuple`. This container will NOT be updated as 71 | connections are created/destroyed. Also, keep in mind that connections cannot be modified this way. 72 | """ 73 | return tuple(cls._connections) 74 | 75 | def is_connected(self) -> bool: 76 | """ 77 | Check if this instance is connected to Wwise. 78 | :return: Whether this instance is connected to Wwise. 79 | """ 80 | return self._client.is_connected() 81 | 82 | def disconnect(self) -> bool: 83 | """ 84 | Disconnect from Wwise. 85 | :return: Whether the disconnection was successful. 86 | """ 87 | if self in self._connections: 88 | self._connections.remove(self) 89 | return self._client.disconnect() 90 | 91 | 92 | WwiseConnection: _TypeAlias = Ak # This cannot exist in aliases.py due to a circular import issue. 93 | """Represents a connection to Wwise.""" 94 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/soundengine/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.soundengine.soundengine import SoundEngine 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.wwise import Wwise 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/console/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.console.console import Console 5 | from pywwise.waapi.ak.wwise.console.project import Project 6 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/console/console.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.waapi.ak.wwise.console.project import Project as _Project 7 | 8 | 9 | class Console: 10 | """ak.wwise.console""" 11 | 12 | def __init__(self, client: _WaapiClient, is_console_instance: bool = False): 13 | """ 14 | Constructor. 15 | :param client: The WAAPI client to use. 16 | :param is_console_instance: Should be set to true if the instance of Wwise is running in a console window. 17 | """ 18 | self._client = client 19 | self.project = _Project(self._client, is_console_instance) 20 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/console/project.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.aliases import ListOrTuple, SystemPath 7 | from pywwise.decorators import console_instance_only 8 | from pywwise.enums import EBasePlatform 9 | from pywwise.primitives import Name 10 | from pywwise.structs import PlatformInfo 11 | 12 | 13 | class Project: 14 | """ak.wwise.console.project""" 15 | 16 | def __init__(self, client: _WaapiClient, is_console_instance: bool = False): 17 | """ 18 | Constructor. 19 | :param client: The WAAPI client to use. 20 | :param is_console_instance: Should be set to true if the instance of Wwise is running in a console window. 21 | """ 22 | self._client = client 23 | self._is_console_instance = is_console_instance 24 | 25 | @console_instance_only 26 | def close(self) -> bool: 27 | """ 28 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_console_project_close.html \n 29 | Closes the current project. This operation is synchronous. 30 | :return: True if there was a project open and it closed successfully; otherwise, false. 31 | """ 32 | results = self._client.call("ak.wwise.console.project.close") 33 | return results.get("hadProjectOpen", False) if results is not None else False 34 | 35 | @console_instance_only 36 | def create(self, project_path: SystemPath, 37 | platforms: ListOrTuple[PlatformInfo] = (PlatformInfo("Windows", EBasePlatform.WINDOWS),), 38 | languages: ListOrTuple[Name] = tuple(Name("English(US)"))) -> bool: 39 | """ 40 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_console_project_create.html \n 41 | Creates, saves and opens new empty project, specified by path and platform. The project has no 42 | factory setting WorkUnit. This operation is synchronous. 43 | :param project_path: The path to the project WPROJ file. Example: "C:/Projects/MyProject/MyProject.wproj". 44 | :param platforms: Specifies the platform(s) supported by the new project. If not specified, only Windows is 45 | used. 46 | :param languages: Array of languages to creates for this project. If not specified, English(US) becomes the 47 | default language. When multiple languages are specified, the first one becomes the default 48 | language. 49 | :return: Whether the call succeeded. True does not necessarily mean the project was successfully created. 50 | """ 51 | platforms = list(dict.fromkeys(platforms)) 52 | args = {"path": str(project_path), "platforms": list(), "languages": [language for language in languages]} 53 | for platform in platforms: 54 | args["platforms"].append({"name": platform.name, "basePlatform": platform.base}) 55 | return self._client.call("ak.wwise.console.project.create", args) is not None 56 | 57 | @console_instance_only 58 | def open(self, project_path: SystemPath, 59 | is_migration_allowed: bool, 60 | version_control_auto_checkout: bool = True) -> bool: 61 | """ 62 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_console_project_open.html \n 63 | Opens a project, specified by path. This operation is synchronous. 64 | :param project_path: The path to the project WPROJ file. 65 | :param is_migration_allowed: Whether migration is allowed. 66 | :param version_control_auto_checkout: Determines if Wwise automatically performs a Checkout source control 67 | operation for affected work units and for the project. Only supported in 68 | Wwise 2023 or above. 69 | :return: Whether the call succeeded. True does not necessarily mean the project was successfully opened. 70 | """ 71 | migration_action = "migrate" if is_migration_allowed else "fail" 72 | args = {"path": str(project_path), 73 | "onMigrationRequired": migration_action, 74 | **({"autoCheckOutToSourceControl": False} if not version_control_auto_checkout else {})} 75 | return self._client.call("ak.wwise.console.project.open", args) is not None 76 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.core.audio import Audio 5 | from pywwise.waapi.ak.wwise.core.audio_source_peaks import AudioSourcePeaks 6 | from pywwise.waapi.ak.wwise.core.capture_log import CaptureLog 7 | from pywwise.waapi.ak.wwise.core.core import Core 8 | from pywwise.waapi.ak.wwise.core.game_parameter import GameParameter 9 | from pywwise.waapi.ak.wwise.core.log import Log 10 | from pywwise.waapi.ak.wwise.core.object import Object 11 | from pywwise.waapi.ak.wwise.core.profiler import Profiler 12 | from pywwise.waapi.ak.wwise.core.project import Project 13 | from pywwise.waapi.ak.wwise.core.remote import Remote 14 | from pywwise.waapi.ak.wwise.core.sound import Sound 15 | from pywwise.waapi.ak.wwise.core.soundbank import SoundBank 16 | from pywwise.waapi.ak.wwise.core.source_control import SourceControl 17 | from pywwise.waapi.ak.wwise.core.switch_container import SwitchContainer 18 | from pywwise.waapi.ak.wwise.core.transport import Transport 19 | from pywwise.waapi.ak.wwise.core.undo import Undo 20 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/capture_log.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from simplevent import RefEvent as _RefEvent 5 | from waapi import WaapiClient as _WaapiClient 6 | 7 | from pywwise.decorators import callback 8 | from pywwise.enums import ECaptureLogItemType, ECaptureLogSeverity 9 | from pywwise.primitives import GameObjectID, GUID, Name, PlayingID, ShortID 10 | from pywwise.statics import EnumStatics 11 | from pywwise.structs import CaptureLogItem 12 | 13 | 14 | class CaptureLog: 15 | """ak.wwise.core.profiler.capture_log""" 16 | 17 | def __init__(self, client: _WaapiClient): 18 | """ 19 | Constructor. 20 | :param client: The WAAPI client to use. 21 | """ 22 | self._client = client 23 | 24 | self.item_added = _RefEvent(CaptureLogItem) 25 | """ 26 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_profiler_capturelog_itemadded.html 27 | \nSent when a new entry is added to the capture log. 28 | \n**Event Data**: 29 | \n- An instance of CaptureLogItem, which contains information such as type, time, severity, etc. 30 | """ 31 | 32 | self._item_added = self._client.subscribe("ak.wwise.core.profiler.captureLog.itemAdded", self._on_item_added) 33 | 34 | @callback 35 | def _on_item_added(self, event: _RefEvent, **kwargs): 36 | """ 37 | Callback function for the `itemAdded` event. 38 | :param event: The event to broadcast. 39 | :param kwargs: The event data. 40 | """ 41 | item_type = EnumStatics.from_value(ECaptureLogItemType, str(kwargs["type"]).replace(" ", "")) 42 | time_seconds = kwargs["time"] 43 | description = kwargs["description"] 44 | severity = EnumStatics.from_value(ECaptureLogSeverity, kwargs["severity"]) 45 | wwise_obj_id = GUID(kwargs["objectId"]) if "objectId" in kwargs else GUID.get_null() 46 | wwise_obj_name = Name(kwargs["objectName"]) if "objectName" in kwargs else Name.get_null() 47 | wwise_obj_short = ShortID(kwargs["objectShortId"]) if "objectShortId" in kwargs else ShortID.get_null() 48 | game_obj_id = GameObjectID(kwargs["gameObjectId"]) if "gameObjectId" in kwargs else GameObjectID.get_null() 49 | game_obj_name = Name(kwargs["gameObjectName"]) if "gameObjectName" in kwargs else Name.get_null() 50 | playing_id = PlayingID(kwargs["playingId"]) if "playingId" in kwargs else PlayingID.get_null() 51 | error_code_name = kwargs.get("errorCodeName", "") 52 | event(CaptureLogItem(item_type, time_seconds, description, severity, wwise_obj_id, wwise_obj_name, 53 | wwise_obj_short, game_obj_id, game_obj_name, playing_id, error_code_name)) 54 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/game_parameter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.enums import EGameParameterValueChangeAction 7 | from pywwise.primitives import GUID, Name, ProjectPath 8 | 9 | 10 | class GameParameter: 11 | """ak.wwise.core.GameParameter""" 12 | 13 | def __init__(self, client: _WaapiClient): 14 | """ 15 | Constructor. 16 | :param client: The WAAPI client to use. 17 | """ 18 | self._client = client 19 | 20 | def set_range(self, game_parameter: GUID | Name | ProjectPath, min_value: float, max_value: float, 21 | on_curve_update: EGameParameterValueChangeAction) -> bool: 22 | """ 23 | https://www.audiokinetic.com/en/library/edge/?source=SDK&id=ak_wwise_core_gameparameter_setrange.html \n 24 | Sets the Min and Max properties on a Game Parameter. Modifies the RTPC curves and blend tracks that use this 25 | Game Parameter for their X axis. 26 | :param game_parameter: The GUID, Name, or the project path of the Game Parameter. 27 | :param min_value: The minimum value of the Game Parameter. 28 | :param max_value: The maximum value of the Game Parameter. 29 | :param on_curve_update: Modifying the Min or Max value of a Game Parameter affects the RTPC curves and blend 30 | tracks that use that Game Parameter for their X axis. Two actions are possible, Stretch 31 | or PreserveX. 32 | :return: True if the call was successful, False otherwise. 33 | """ 34 | args = {"object": game_parameter, "min": min_value, "max": max_value, 35 | "onCurveUpdate": on_curve_update} 36 | 37 | return self._client.call("ak.wwise.core.gameParameter.setRange", args) is not None 38 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/log.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from simplevent import RefEvent as _RefEvent 5 | from waapi import WaapiClient as _WaapiClient 6 | 7 | from pywwise.aliases import ListOrTuple 8 | from pywwise.decorators import callback 9 | from pywwise.enums import ELogChannel, ELogSeverity 10 | from pywwise.statics import EnumStatics 11 | from pywwise.structs import LogItem 12 | 13 | 14 | class Log: 15 | """ak.wwise.core.log""" 16 | 17 | def __init__(self, client: _WaapiClient): 18 | """ 19 | Constructor. 20 | :param client: The WAAPI client to use. 21 | """ 22 | self._client = client 23 | 24 | self.item_added = _RefEvent(ELogChannel, LogItem) 25 | """ 26 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_log_itemadded.html 27 | \nSent when an item is added to the log. To retrieve the complete log, refer to `ak.wwise.core.log.get`. 28 | \n**Event Data**: 29 | \n- The channel on which the item was added. 30 | \n- The item added to the log. 31 | """ 32 | 33 | self._item_added = self._client.subscribe("ak.wwise.core.log.itemAdded", self._on_item_added) 34 | 35 | @callback 36 | def _on_item_added(self, event: _RefEvent, **kwargs): 37 | """ 38 | Callback function for the `itemAdded` event. 39 | :param event: The event to broadcast. 40 | :param kwargs: The event data. 41 | """ 42 | channel = EnumStatics.from_value(ELogChannel, kwargs["channel"]) 43 | item = LogItem(severity=EnumStatics.from_value(ELogSeverity, kwargs["item"]["severity"]), 44 | time=kwargs["item"]["time"], 45 | id=kwargs["item"]["messageId"], 46 | description=kwargs["item"]["message"]) 47 | event(channel, item) 48 | 49 | def add_item(self, message: str, severity: ELogSeverity = ELogSeverity.MESSAGE, 50 | channel: ELogChannel = ELogChannel.GENERAL) -> bool: 51 | """ 52 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_log_additem.html \n 53 | Adds a new item to the logs on the specified channel. 54 | :param message: The text of the message to add. 55 | :param severity: The severity of the message to add. 56 | :param channel: The channel on which to add the message. 57 | :return: Whether the call succeeded. 58 | """ 59 | args = {"message": message, "severity": severity.value, "channel": channel.value} 60 | return self._client.call("ak.wwise.core.log.addItem", args) is not None 61 | 62 | def clear(self, channels: ELogChannel | ListOrTuple[ELogChannel] = None) -> bool: 63 | """ 64 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_log_clear.html \n 65 | Clears the logs on one or more channels. 66 | :param channels: The channel or channels to clear. Duplicates will be ignored. If `None`, all channels will be 67 | cleared. 68 | :return: Whether the call succeeded. 69 | """ 70 | if channels is None: 71 | channels = tuple(EnumStatics.get_all_members(ELogChannel)) 72 | elif isinstance(channels, ELogChannel): 73 | channels = (channels,) # convert single value to a collection, so the loop below still works 74 | 75 | returns = list[bool]() 76 | for channel in channels: 77 | args = {"channel": channel} 78 | returns.append(self._client.call("ak.wwise.core.log.clear", args) is not None) 79 | 80 | return all(returns) 81 | 82 | def get(self, channel: ELogChannel = ELogChannel.GENERAL) -> tuple[LogItem, ...]: 83 | """ 84 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_log_get.html \n 85 | Retrieves the latest log for a specific channel. Refer to `ak.wwise.core.log.item_added` to be 86 | notified when an item is added to the log. The log is empty when used in WwiseConsole. 87 | :param channel: The channel to clear. 88 | :return: A tuple of log items. May be empty. 89 | """ 90 | args = {"channel": channel.value} 91 | result = self._client.call("ak.wwise.core.log.get", args) 92 | return tuple(LogItem(severity=EnumStatics.from_value(ELogSeverity, item["severity"]), 93 | time=item["time"], 94 | id=item["messageId"], 95 | description=item["message"]) 96 | for item in result.get("items", ())) 97 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/project.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from simplevent import RefEvent as _RefEvent 5 | from waapi import WaapiClient as _WaapiClient 6 | 7 | from pywwise.aliases import SystemPath 8 | from pywwise.decorators import callback 9 | 10 | 11 | class Project: 12 | """ak.wwise.core.project""" 13 | 14 | def __init__(self, client: _WaapiClient): 15 | """ 16 | Constructor. 17 | :param client: The WAAPI client to use. 18 | """ 19 | self._client = client 20 | 21 | self.loaded = _RefEvent() 22 | """ 23 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_project_loaded.html 24 | \nSent when the project has been successfully loaded. 25 | """ 26 | 27 | self._loaded = self._client.subscribe("ak.wwise.core.project.loaded", self._on_loaded) 28 | 29 | self.post_closed = _RefEvent() 30 | """ 31 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_project_postclosed.html 32 | \nSent when the after the project is completely closed. 33 | """ 34 | 35 | self._post_closed = self._client.subscribe("ak.wwise.core.project.postClosed", self._on_post_closed) 36 | 37 | self.pre_closed = _RefEvent() 38 | """ 39 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_project_preclosed.html 40 | \nSent when the project begins closing. 41 | """ 42 | 43 | self._pre_closed = self._client.subscribe("ak.wwise.core.project.preClosed", self._on_pre_closed) 44 | 45 | self.saved = _RefEvent(tuple[SystemPath, ...]) 46 | """ 47 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_project_saved.html 48 | \nSent when the project has been saved. 49 | \n**Event Data**: 50 | \n- A tuple containing the absolute paths to the Work Unit and Project files that were modified. 51 | """ 52 | 53 | self._saved = self._client.subscribe("ak.wwise.core.project.saved", self._on_saved) 54 | 55 | @callback 56 | def _on_loaded(self, event: _RefEvent): 57 | """ 58 | Callback function for the `loaded` event. 59 | :param event: The event to broadcast. 60 | """ 61 | event() 62 | 63 | @callback 64 | def _on_post_closed(self, event: _RefEvent): 65 | """ 66 | Callback function for the `postClosed` event. 67 | :param event: The event to broadcast. 68 | """ 69 | event() 70 | 71 | @callback 72 | def _on_pre_closed(self, event: _RefEvent): 73 | """ 74 | Callback function for the `preClosed` event. 75 | :param event: The event to broadcast. 76 | """ 77 | event() 78 | 79 | @callback 80 | def _on_saved(self, event: _RefEvent, **kwargs): 81 | """ 82 | Callback function for the `saved` event. 83 | :param event: The event to broadcast. 84 | :param kwargs: The event data. 85 | """ 86 | event(tuple(SystemPath(path) for path in kwargs.get("modifiedPaths", dict()))) 87 | 88 | def save(self, version_control_auto_checkout: bool = True) -> bool: 89 | """ 90 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_project_save.html \n 91 | Saves the current project. 92 | :param version_control_auto_checkout: Whether to automatically check out changes to version control. Only 93 | supported in Wwise 2023 or above. 94 | :return: Whether the operation succeeded. 95 | """ 96 | args = {"autoCheckOutToSourceControl": False} if not version_control_auto_checkout else dict() 97 | return self._client.call("ak.wwise.core.project.save", args) is not None 98 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/sound.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.enums import EObjectType 7 | from pywwise.primitives import GUID, Name, ProjectPath 8 | from pywwise.structs import PlatformInfo 9 | 10 | 11 | class Sound: 12 | """ak.wwise.core.sound""" 13 | 14 | def __init__(self, client: _WaapiClient): 15 | """ 16 | Constructor. 17 | :param client: The WAAPI client to use. 18 | """ 19 | self._client = client 20 | 21 | def set_active_source(self, sound: GUID | Name | ProjectPath, source: GUID | Name | ProjectPath, 22 | platform: PlatformInfo | Name | GUID = None) -> bool: 23 | """ 24 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_sound_setactivesource.html \n 25 | Sets which version of the source is being used for the specified sound. Use `ak.wwise.core.object.get` with the 26 | 'activeSource' return option to get the active source of a sound. 27 | :param sound: The GUID or the project path of the sound for which to set the active source. 28 | :param source: The GUID or the project path of the source. 29 | :param platform: The platform on which to execute this operation. By default, the active platform in the Wwise 30 | instance will be used. 31 | :return: Whether the call succeeded. 32 | """ 33 | args = {"sound": f"{EObjectType.SOUND}{sound}" if isinstance(sound, Name) else sound, 34 | "source": f"{EObjectType.AUDIO_SOURCE}{source}" if isinstance(source, Name) else source} 35 | if platform is not None: 36 | args["platform"] = platform 37 | return self._client.call("ak.wwise.core.sound.setActiveSource", args) is not None 38 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/core/undo.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | 7 | class Undo: 8 | """ak.wwise.core.undo""" 9 | 10 | def __init__(self, client: _WaapiClient): 11 | """ 12 | Constructor. 13 | :param client: The WAAPI client to use. 14 | """ 15 | self._client = client 16 | 17 | def begin_group(self) -> bool: 18 | """ 19 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_undo_begingroup.html \n 20 | Begins an undo group. Make sure to call ak.wwise.core.undo.endGroup exactly once for every 21 | ak.wwise.core.beginUndoGroup call you make. Calls to `ak.wwise.core.undo.begin_group` can be nested. 22 | When closing a WAMP session, a check is made to ensure that all undo groups are closed. If not, 23 | a cancelGroup is called for each of the groups still open. 24 | :return: Whether the call was successful. 25 | """ 26 | return self._client.call("ak.wwise.core.undo.beginGroup") is not None 27 | 28 | def cancel_group(self, undo: bool = False) -> bool: 29 | """ 30 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_undo_cancelgroup.html \n 31 | Cancels the last undo group. 32 | :param undo: Specify if the operations are undone. 33 | :return: Whether the call was successful. 34 | """ 35 | return self._client.call("ak.wwise.core.undo.cancelGroup", {"undo": undo}) is not None 36 | 37 | def end_group(self, display_name: str) -> bool: 38 | """ 39 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_undo_endgroup.html \n 40 | Ends the last undo group. 41 | :param display_name: The name that is displayed in the history for this undo group. 42 | :return: Whether the call was successful. 43 | """ 44 | return self._client.call("ak.wwise.core.undo.endGroup", {"displayName": display_name}) is not None 45 | 46 | def redo(self) -> bool: 47 | """ 48 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_undo_redo.html \n 49 | Redoes the last operation in the Undo stack. 50 | :return: Whether the call was successful. 51 | """ 52 | return self._client.call("ak.wwise.core.undo.redo") is not None 53 | 54 | def undo(self) -> bool: 55 | """ 56 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_core_undo_undo.html \n 57 | Undoes the last operation in the Undo stack. 58 | :return: Whether the call was successful. 59 | """ 60 | return self._client.call("ak.wwise.core.undo.undo") is not None 61 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/debug/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.debug.debug import Debug 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.ui.commands import Commands 5 | from pywwise.waapi.ak.wwise.ui.project import Project 6 | from pywwise.waapi.ak.wwise.ui.ui import UI 7 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/ui/project.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.aliases import SystemPath 7 | from pywwise.structs import PlatformInfo 8 | 9 | 10 | class Project: 11 | """ak.wwise.ui.project""" 12 | 13 | def __init__(self, client: _WaapiClient): 14 | """ 15 | Constructor. 16 | :param client: The WAAPI client to use. 17 | """ 18 | self._client = client 19 | 20 | def close(self, bypass_save: bool = True) -> bool: 21 | """ 22 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_ui_project_close.html \n 23 | Closes the current project. 24 | :param bypass_save: Indicates if the user should not be prompted to save the current project. 25 | **Defaults to true.** 26 | :return: True if there was a project open, false otherwise. Note that if there was no project open, 27 | no `ak.wwise.core.project.pre_closed` or `ak.wwise.core.project.post_closed` event is issued. 28 | """ 29 | args = {"bypassSave": bypass_save} 30 | result = self._client.call("ak.wwise.ui.project.close", args) 31 | return result.get("hadProjectOpen") 32 | 33 | def create(self, path: SystemPath, platforms: set[PlatformInfo] = None, languages: set[str] = None) -> bool: 34 | """ 35 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_ui_project_create.html \n 36 | Creates, saves and opens new empty project, specified by path and platform. The project has no 37 | factory setting WorkUnit. Please refer to `ak.wwise.core.project.loaded` for further explanations 38 | on how to be notified when the operation has completed. 39 | :param path: The path to the project WPROJ file. The path must use the same name for the WPROJ and the parent 40 | directory folder. For example: `C:/PyWwise/Projects/MYPROJECT/MYPROJECT.wproj`. 41 | :param platforms: Specifies the platform or platforms supported by the new project. If not specified, only 42 | Windows is used. Duplicates are not allowed; platforms should have **unique names**. 43 | :param languages: Array of languages to creates for this project. If not specified, the English(US) language is 44 | created. When multiple languages are specified, the first one becomes the default language. 45 | :return: Whether the project creation succeeded. This is done by checking if the specified path now 46 | exists. 47 | """ 48 | args = {"path": str(path)} 49 | 50 | if platforms is not None: 51 | args["platforms"] = list() 52 | for platform in platforms: 53 | args["platforms"].append({"name": platform.name, "basePlatform": platform.base}) 54 | if languages is not None: 55 | args["languages"] = list(languages) 56 | 57 | self._client.call("ak.wwise.ui.project.create", args) 58 | return path.exists() 59 | 60 | def open(self, path: SystemPath, is_migration_required: bool = False, bypass_save: bool = True, 61 | version_control_auto_checkout: bool = True) -> bool: 62 | """ 63 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_ui_project_open.html \n 64 | Opens a project, specified by path. Please refer to `ak.wwise.core.project.loaded` for further 65 | explanations on how to be notified when the operation has completed. 66 | :param path: The path to the project WPROJ file. For using WAAPI on Mac, please refer to Using WAAPI on Mac. 67 | :param is_migration_required: Whether migration is required or not. 68 | :param bypass_save: Indicates if the user should not be prompted to save the current project. 69 | :param version_control_auto_checkout: Determines if Wwise automatically performs a Checkout source control 70 | operation for affected work units and for the project. Only supported 71 | in Wwise 2023 or above. 72 | :return: Returns whether the project was open. 73 | """ 74 | if not path.exists(): 75 | return False 76 | 77 | migration_action = "migrate" if is_migration_required else "fail" 78 | 79 | args = {"path": str(path), 80 | "onMigrationRequired": migration_action, 81 | "bypassSave": bypass_save, 82 | **({"autoCheckoutToSourceControl": False} if not version_control_auto_checkout else {})} 83 | 84 | return self._client.call("ak.wwise.ui.project.open", args) is not None 85 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/waapi/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from pywwise.waapi.ak.wwise.waapi.waapi import Waapi 5 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/waapi/waapi.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | 7 | class Waapi: 8 | """ak.wwise.ui.waapi""" 9 | 10 | def __init__(self, client: _WaapiClient): 11 | """ 12 | Constructor. 13 | :param client: The WAAPI client to use. 14 | """ 15 | self._client = client 16 | 17 | def get_functions(self) -> tuple[str, ...]: 18 | """ 19 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_waapi_getfunctions.html \n 20 | Retrieves the list of functions. 21 | :return: A tuple containing the URI of all WAAPI functions. 22 | """ 23 | results = self._client.call("ak.wwise.waapi.getFunctions") 24 | return tuple(results.get("functions")) if results is not None else () 25 | 26 | def get_schema(self, uri: str) -> dict | None: 27 | """ 28 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_waapi_getschema.html \n 29 | Retrieves the JSON schema of a Waapi URI. 30 | :param uri: The URI to get the schema for (e.g. "ak.wwise.waapi.getSchema" gets the schema for this function). 31 | :return: If the call succeeded, a JSON-like dictionary representing the schema of the specified URI; else, None. 32 | """ 33 | return self._client.call("ak.wwise.waapi.getSchema", {"uri": uri}) 34 | 35 | def get_topics(self) -> tuple[str, ...]: 36 | """ 37 | https://www.audiokinetic.com/library/edge/?source=SDK&id=ak_wwise_waapi_gettopics.html \n 38 | Retrieves the list of topics to which a client can subscribe. 39 | :return: A tuple containing the URI of all WAAPI topics. 40 | """ 41 | results = self._client.call("ak.wwise.waapi.getTopics") 42 | return tuple(results.get("topics")) if results is not None else () 43 | -------------------------------------------------------------------------------- /pywwise/waapi/ak/wwise/wwise.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from waapi import WaapiClient as _WaapiClient 5 | 6 | from pywwise.structs import WwiseObjectWatch 7 | from pywwise.waapi.ak.wwise.console import Console as _Console 8 | from pywwise.waapi.ak.wwise.core import Core as _Core 9 | from pywwise.waapi.ak.wwise.debug import Debug as _Debug 10 | from pywwise.waapi.ak.wwise.ui import UI as _UI 11 | from pywwise.waapi.ak.wwise.waapi import Waapi as _Waapi 12 | 13 | 14 | class Wwise: 15 | """ak.wwise""" 16 | 17 | def __init__(self, client: _WaapiClient, is_debug_build: bool = False, is_console_instance: bool = False, 18 | watch_list: tuple[WwiseObjectWatch, ...] = ()): 19 | """ 20 | Constructor. 21 | :param client: The WAAPI client to use. 22 | :param is_debug_build: Should be set to true if the instance of Wwise is a debug build and debug-only 23 | functions/topics are required. 24 | :param is_console_instance: Should be set to true if the instance of Wwise is running in a console window. 25 | :param watch_list: A tuple of `WwiseObjectWatch` instances. This will be used to set up the 26 | `ak.wwise.core.object.property_changed` event. 27 | """ 28 | self._client = client 29 | self.console = _Console(client, is_console_instance) 30 | self.core = _Core(client, watch_list) 31 | self.debug = _Debug(client, is_debug_build) 32 | self.ui = _UI(client) 33 | self.waapi = _Waapi(client) 34 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | simplevent~=2.2.0 2 | waapi-client~=0.7.2 3 | -------------------------------------------------------------------------------- /resources/data/SoundBank_DefinitionFile_Test.tsv: -------------------------------------------------------------------------------- 1 | Audio File Object Path Property [Voice Pitch] Reference [Output Bus] Event 2 | C:\My Audio Files\ Minigun\ MnGn_Barrel_Down.wav \Actor-Mixer Hierarchy\ Default Work Unit\ Minigun\ Barrel\ Minigun_Barrel_Stop 50 \Master-Mixer Hierarchy\Default Work Unit\Master Audio Bus\Environmental\SFX\Guns \Events\Minigun\Pay_Minigun@Play -------------------------------------------------------------------------------- /resources/lua/main_ut.lua: -------------------------------------------------------------------------------- 1 | return "PyWwise" -------------------------------------------------------------------------------- /resources/waves/WaveAsset_Test.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matheusvilano/PyWwise/22f99a985c7bf2c2b11a412a42fa0ecec60168f2/resources/waves/WaveAsset_Test.wav -------------------------------------------------------------------------------- /resources/wwise/Add-ons/Commands/pywwise_dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "commands": [ 4 | { 5 | "id": "pywwise.dev.open_wwu_with_vscode", 6 | "displayName": "Open With VSCode", 7 | "program": "code", 8 | "args": "${filePath}", 9 | "startMode": "MultipleSelectionSingleProcessSpaceSeparated", 10 | "contextMenu": { 11 | "basePath": "PyWwise/Dev", 12 | "enabledFor": "WorkUnit", 13 | "visibleFor": "WorkUnit" 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /resources/wwise/Attenuations/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 0 17 | 0 18 | 5 19 | 20 | 21 | 100 22 | -200 23 | 37 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /resources/wwise/Audio Devices/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/wwise/Control Surface Sessions/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /resources/wwise/Conversion Settings/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 4 11 | 12 | 13 | 14 | 15 | 0 16 | 17 | 18 | 19 | 20 | 48000 21 | 22 | 23 | 24 | 25 | 0 26 | 27 | 28 | 29 | 30 | 0 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /resources/wwise/Dynamic Dialogue/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Effects/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Events/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/wwise/Game Parameters/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Master-Mixer Hierarchy/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/wwise/Metadata/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Mixing Sessions/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Modulators/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/wwise/Originals/Voices/English(US)/UnitTest_OhSheeshSniper.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matheusvilano/PyWwise/22f99a985c7bf2c2b11a412a42fa0ecec60168f2/resources/wwise/Originals/Voices/English(US)/UnitTest_OhSheeshSniper.wav -------------------------------------------------------------------------------- /resources/wwise/Presets/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/wwise/Presets/Factory Spatial Audio.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /resources/wwise/Queries/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/SoundBanks/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /resources/wwise/Soundcaster Sessions/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 50 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /resources/wwise/States/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/wwise/Switches/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/wwise/Triggers/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/wwise/Virtual Acoustics/Default Work Unit.wwu: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | description-file=README.md 3 | license_files=LICENSE -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from setuptools import setup 5 | 6 | 7 | def main(): 8 | setup() 9 | 10 | 11 | if __name__ == "__main__": 12 | main() 13 | -------------------------------------------------------------------------------- /tests/testclass.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from asyncio import new_event_loop as asyncio_new_event_loop, set_event_loop as asyncio_set_event_loop 5 | from unittest import TestCase 6 | 7 | from pywwise import new_waapi_connection 8 | 9 | 10 | class PyWwiseTest(TestCase): 11 | """Base class for PyWwise test cases. Handles instantiating and deleting Ak instances automatically.""" 12 | 13 | @classmethod 14 | def setUpClass(cls): 15 | super().setUpClass() 16 | asyncio_set_event_loop(asyncio_new_event_loop()) 17 | cls.ak = new_waapi_connection() 18 | 19 | @classmethod 20 | def tearDownClass(cls): 21 | super().tearDownClass() 22 | del cls.ak 23 | -------------------------------------------------------------------------------- /upload.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Matheus Vilano 2 | # SPDX-License-Identifier: Apache-2.0 3 | 4 | from os import system 5 | from sys import argv 6 | 7 | 8 | def main(): 9 | if "--nobuild" not in argv: 10 | system("python setup.py sdist") 11 | system("twine upload dist/*") 12 | 13 | 14 | if __name__ == "__main__": 15 | main() 16 | --------------------------------------------------------------------------------