@woosh/meep-engine 3.46.0 → 3.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
- package/editor/actions/concrete/TransformModifyAction.js +10 -2
- package/editor/ecs/component/FieldDescriptor.js +15 -0
- package/editor/ecs/component/createObjectEditor.js +41 -12
- package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Transform64Editor.js +77 -70
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +4 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +4 -2
- package/package.json +1 -1
- package/src/core/collection/array/array_insert_at.d.ts +16 -0
- package/src/core/collection/array/array_insert_at.d.ts.map +1 -0
- package/src/core/collection/array/array_insert_at.js +32 -0
- package/src/core/collection/array/array_remove_at.d.ts +15 -0
- package/src/core/collection/array/array_remove_at.d.ts.map +1 -0
- package/src/core/collection/array/array_remove_at.js +30 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts +37 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.js +172 -0
- package/src/core/geom/Quaternion.d.ts +1 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +12 -48
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +9 -4
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +10 -0
- package/src/engine/ecs/transform/t64_look_rotation.d.ts +4 -4
- package/src/engine/ecs/transform/t64_look_rotation.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_look_rotation.js +7 -18
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +30 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +72 -29
- package/src/engine/input/devices/KeyboardDevice.d.ts +1 -0
- package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +7 -6
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +15 -2
- package/src/engine/network/CONGESTION_CONTROL.md +9 -9
- package/src/engine/network/MESSAGE_TRANSPORT.md +364 -0
- package/src/engine/network/NetworkSession.d.ts +31 -11
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +453 -286
- package/src/engine/network/README.md +77 -27
- package/src/engine/network/SMOOTHNESS_DESIGN.md +13 -5
- package/src/engine/network/diagnostics/BandwidthMeter.d.ts +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.js +1 -1
- package/src/engine/network/orchestrator/HostJoin.d.ts +111 -0
- package/src/engine/network/orchestrator/HostJoin.d.ts.map +1 -0
- package/src/engine/network/orchestrator/HostJoin.js +271 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +151 -112
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +450 -499
- package/src/engine/network/orchestrator/PendingSlices.d.ts +30 -0
- package/src/engine/network/orchestrator/PendingSlices.d.ts.map +1 -0
- package/src/engine/network/orchestrator/PendingSlices.js +83 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts +34 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts.map +1 -0
- package/src/engine/network/orchestrator/ReliableFrames.js +96 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +77 -10
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +236 -61
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +20 -6
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +33 -8
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +7 -1
- package/src/engine/network/sim/ActionLog.d.ts +32 -5
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +47 -5
- package/src/engine/network/sim/SimActionExecutor.d.ts +42 -2
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +100 -4
- package/src/engine/network/sim/Snapshotter.d.ts +12 -0
- package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
- package/src/engine/network/sim/Snapshotter.js +43 -0
- package/src/engine/network/state/Baseline.d.ts +1 -1
- package/src/engine/network/state/Baseline.js +1 -1
- package/src/engine/network/state/FrameBufferRing.d.ts +25 -6
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -1
- package/src/engine/network/state/FrameBufferRing.js +51 -6
- package/src/engine/network/state/InputRing.d.ts +4 -0
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +7 -0
- package/src/engine/network/transport/DeferredTransport.d.ts.map +1 -1
- package/src/engine/network/transport/DeferredTransport.js +1 -0
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +4 -2
- package/src/engine/network/transport/Transport.d.ts +7 -0
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +8 -0
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +20 -5
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +8 -0
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +6 -0
- package/src/engine/network/transport/connection/Connection.d.ts +191 -0
- package/src/engine/network/transport/connection/Connection.d.ts.map +1 -0
- package/src/engine/network/transport/connection/Connection.js +1262 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts +94 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RangeSet.js +260 -0
- package/src/engine/network/transport/connection/RxStream.d.ts +48 -0
- package/src/engine/network/transport/connection/RxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RxStream.js +211 -0
- package/src/engine/network/transport/connection/TxStream.d.ts +90 -0
- package/src/engine/network/transport/connection/TxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/TxStream.js +243 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts +17 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts.map +1 -0
- package/src/engine/network/transport/connection/bytes_copy.js +34 -0
- package/src/engine/network/transport/connection/varint.d.ts +46 -0
- package/src/engine/network/transport/connection/varint.d.ts.map +1 -0
- package/src/engine/network/transport/connection/varint.js +107 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +38 -7
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +35 -7
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.js +48 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +12 -2
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +173 -9
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +9 -3
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +28 -8
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +8 -0
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.js +51 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +15 -1
- package/src/engine/sound/sopra/README.md +768 -644
- package/src/engine/sound/sopra/SopraEngine.d.ts +104 -8
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
- package/src/engine/sound/sopra/SopraEngine.js +327 -12
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +28 -2
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +55 -5
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +10 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +77 -55
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts +31 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.js +75 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +38 -9
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +34 -5
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +7 -2
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +137 -122
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +3 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +146 -131
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +6 -1
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +44 -2
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +83 -43
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts +96 -0
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectChain.js +286 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts +123 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.js +320 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +55 -5
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.js +201 -26
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +2 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +6 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +15 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +32 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/MockAudioContext.js +3 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +13 -3
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/fadeOutAndStop.js +25 -13
- package/src/shade/RENDERER_CONTRACT.md +6 -3
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts +24 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +34 -0
- package/src/shade/device/ShadeDeviceFailure.d.ts +12 -5
- package/src/shade/device/ShadeDeviceFailure.d.ts.map +1 -1
- package/src/shade/device/ShadeDeviceFailure.js +17 -8
- package/src/shade/device/ShadeDeviceFailureReason.d.ts +1 -1
- package/src/shade/device/ShadeDeviceFailureReason.js +2 -2
- package/src/shade/device/shade_device_floor_unmet.d.ts +13 -0
- package/src/shade/device/shade_device_floor_unmet.d.ts.map +1 -0
- package/src/shade/device/shade_device_floor_unmet.js +32 -0
- package/src/shade/renderer/Renderer.d.ts +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +29 -55
- package/src/shade/renderer/buffer/GPUBufferAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferAllocator.js +9 -0
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts +21 -12
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts.map +1 -1
- package/src/shade/renderer/buffer/buffer_pool_ops.js +18 -19
- package/src/shade/renderer/gpu_primitive/test/gpu_test.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/test/gpu_test.js +8 -11
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/pool/TransientResourcePool.d.ts +24 -0
- package/src/shade/renderer/pool/TransientResourcePool.d.ts.map +1 -1
- package/src/shade/renderer/pool/TransientResourcePool.js +41 -10
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +18 -2
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +230 -218
- package/src/view/graphics/GraphicsContextFailureView.d.ts +1 -2
- package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -1
- package/src/view/graphics/GraphicsContextFailureView.js +1 -2
- package/src/engine/network/transport/Channel.js +0 -336
- package/src/engine/network/transport/ReliableCommandPipeline.js +0 -335
- package/src/engine/network/transport/fragments/FragmentAssembler.js +0 -350
- package/src/engine/network/transport/fragments/FragmentRetention.js +0 -191
- package/src/engine/network/transport/fragments/fragment_send.js +0 -157
- package/src/engine/network/transport/fragments/packet_size.js +0 -107
|
@@ -1,122 +1,137 @@
|
|
|
1
|
-
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
2
|
-
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
|
-
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
r
|
|
52
|
-
|
|
53
|
-
r.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
node
|
|
68
|
-
|
|
69
|
-
node.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
1
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
2
|
+
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
|
+
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import("./AbstractAudioEffect.js").BuiltAudioEffect} BuiltAudioEffect
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Dynamics compressor insert (on a bus or an event), backed by a {@link DynamicsCompressorNode}.
|
|
11
|
+
* NOTE: this is a per-bus or per-instance insert; the engine's master compressor (in SoundEngine) is separate
|
|
12
|
+
* master-glue and is not duplicated here.
|
|
13
|
+
*/
|
|
14
|
+
export class CompressorEffect extends AbstractAudioEffect {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* dB.
|
|
18
|
+
* @type {number}
|
|
19
|
+
*/
|
|
20
|
+
threshold = -24;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* dB.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
knee = 30;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
ratio = 12;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Seconds.
|
|
35
|
+
* @type {number}
|
|
36
|
+
*/
|
|
37
|
+
attack = 0.003;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Seconds.
|
|
41
|
+
* @type {number}
|
|
42
|
+
*/
|
|
43
|
+
release = 0.25;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @param {{threshold?:number, knee?:number, ratio?:number, attack?:number, release?:number}} [options]
|
|
48
|
+
* @returns {CompressorEffect}
|
|
49
|
+
*/
|
|
50
|
+
static from({ threshold = -24, knee = 30, ratio = 12, attack = 0.003, release = 0.25 } = {}) {
|
|
51
|
+
const r = new CompressorEffect();
|
|
52
|
+
|
|
53
|
+
r.threshold = threshold;
|
|
54
|
+
r.knee = knee;
|
|
55
|
+
r.ratio = ratio;
|
|
56
|
+
r.attack = attack;
|
|
57
|
+
r.release = release;
|
|
58
|
+
|
|
59
|
+
return r;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @param {BaseAudioContext} ctx
|
|
64
|
+
* @returns {BuiltAudioEffect}
|
|
65
|
+
*/
|
|
66
|
+
build(ctx) {
|
|
67
|
+
const node = ctx.createDynamicsCompressor();
|
|
68
|
+
|
|
69
|
+
node.threshold.value = this.threshold;
|
|
70
|
+
node.knee.value = this.knee;
|
|
71
|
+
node.ratio.value = this.ratio;
|
|
72
|
+
node.attack.value = this.attack;
|
|
73
|
+
node.release.value = this.release;
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
input: node,
|
|
77
|
+
output: node,
|
|
78
|
+
params: [node.threshold, node.knee, node.ratio, node.attack, node.release]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param {CompressorEffect} other
|
|
85
|
+
* @returns {boolean}
|
|
86
|
+
*/
|
|
87
|
+
equals(other) {
|
|
88
|
+
return this.threshold === other.threshold
|
|
89
|
+
&& this.knee === other.knee
|
|
90
|
+
&& this.ratio === other.ratio
|
|
91
|
+
&& this.attack === other.attack
|
|
92
|
+
&& this.release === other.release;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
hash() {
|
|
96
|
+
return hash_mix3(
|
|
97
|
+
hash_mix3(
|
|
98
|
+
computeHashFloat(this.threshold),
|
|
99
|
+
computeHashFloat(this.knee),
|
|
100
|
+
computeHashFloat(this.ratio)
|
|
101
|
+
),
|
|
102
|
+
computeHashFloat(this.attack),
|
|
103
|
+
computeHashFloat(this.release)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
clone() {
|
|
108
|
+
return CompressorEffect.from(this);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
toJSON() {
|
|
112
|
+
return {
|
|
113
|
+
threshold: this.threshold,
|
|
114
|
+
knee: this.knee,
|
|
115
|
+
ratio: this.ratio,
|
|
116
|
+
attack: this.attack,
|
|
117
|
+
release: this.release
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
fromJSON({ threshold = -24, knee = 30, ratio = 12, attack = 0.003, release = 0.25 }) {
|
|
122
|
+
this.threshold = threshold;
|
|
123
|
+
this.knee = knee;
|
|
124
|
+
this.ratio = ratio;
|
|
125
|
+
this.attack = attack;
|
|
126
|
+
this.release = release;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
CompressorEffect.typeName = "SopraCompressorEffect";
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* What a built compressor can move while it plays.
|
|
134
|
+
* @readonly
|
|
135
|
+
* @type {string[]}
|
|
136
|
+
*/
|
|
137
|
+
CompressorEffect.parameters = ['threshold', 'knee', 'ratio', 'attack', 'release'];
|
|
@@ -13,7 +13,7 @@ export namespace EqFilterType {
|
|
|
13
13
|
let Allpass: number;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Equalizer / filter bus
|
|
16
|
+
* Equalizer / filter insert (on a bus or an event), backed by a {@link BiquadFilterNode}.
|
|
17
17
|
*/
|
|
18
18
|
export class EqEffect extends AbstractAudioEffect {
|
|
19
19
|
/**
|
|
@@ -69,6 +69,8 @@ export class EqEffect extends AbstractAudioEffect {
|
|
|
69
69
|
}
|
|
70
70
|
export namespace EqEffect {
|
|
71
71
|
let typeName: string;
|
|
72
|
+
let parameters: string[];
|
|
72
73
|
}
|
|
74
|
+
export type BuiltAudioEffect = import("./AbstractAudioEffect.js").BuiltAudioEffect;
|
|
73
75
|
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
74
76
|
//# sourceMappingURL=EqEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EqEffect.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/effect/EqEffect.js"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"EqEffect.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/effect/EqEffect.js"],"names":[],"mappings":";;;2BAWU,MAAM;;;;;;;;;;;AAoBhB;;GAEG;AACH;IAyBI;;;;OAIG;IACH,mDAHW;QAAC,UAAU,CAAC,EAAC,YAAY,GAAC,MAAM,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,CAAC,CAAC,EAAC,MAAM,CAAC;QAAC,MAAM,CAAC,EAAC,MAAM,CAAA;KAAC,GAC7E,QAAQ,CAWpB;IArCD;;OAEG;IACH,YAFU,YAAY,GAAC,MAAM,CAEK;IAElC;;;OAGG;IACH,WAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,GAFU,MAAM,CAEV;IAEN;;;OAGG;IACH,QAFU,MAAM,CAEL;IAqCX;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAOnB;IAED,eASC;IAED,kBAEC;IAED;;;;;MAOC;IAED;;;;;aAKC;CACJ;;;oBAOS,MAAM,EAAE;;+BAzIL,OAAO,0BAA0B,EAAE,gBAAgB;oCAH5B,0BAA0B"}
|
|
@@ -1,131 +1,146 @@
|
|
|
1
|
-
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
|
-
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
3
|
-
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
|
-
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
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
|
-
|
|
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
|
-
r
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
node
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
3
|
+
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
|
+
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {import("./AbstractAudioEffect.js").BuiltAudioEffect} BuiltAudioEffect
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Filter type, mapped to a WebAudio {@link BiquadFilterType}.
|
|
12
|
+
* @enum {number}
|
|
13
|
+
*/
|
|
14
|
+
export const EqFilterType = {
|
|
15
|
+
Lowpass: 0,
|
|
16
|
+
Highpass: 1,
|
|
17
|
+
Bandpass: 2,
|
|
18
|
+
Lowshelf: 3,
|
|
19
|
+
Highshelf: 4,
|
|
20
|
+
Peaking: 5,
|
|
21
|
+
Notch: 6,
|
|
22
|
+
Allpass: 7
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @type {string[]}
|
|
27
|
+
*/
|
|
28
|
+
const EQ_FILTER_TYPE_TO_BIQUAD = [
|
|
29
|
+
'lowpass', 'highpass', 'bandpass', 'lowshelf', 'highshelf', 'peaking', 'notch', 'allpass'
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Equalizer / filter insert (on a bus or an event), backed by a {@link BiquadFilterNode}.
|
|
34
|
+
*/
|
|
35
|
+
export class EqEffect extends AbstractAudioEffect {
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @type {EqFilterType|number}
|
|
39
|
+
*/
|
|
40
|
+
filterType = EqFilterType.Peaking;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Cutoff/center frequency in Hz.
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
frequency = 350;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Quality factor.
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
Q = 1;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Boost/cut in decibels (only used by peaking / shelf filters).
|
|
56
|
+
* @type {number}
|
|
57
|
+
*/
|
|
58
|
+
gainDb = 0;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param {{filterType?:EqFilterType|number, frequency?:number, Q?:number, gainDb?:number}} [options]
|
|
63
|
+
* @returns {EqEffect}
|
|
64
|
+
*/
|
|
65
|
+
static from({ filterType = EqFilterType.Peaking, frequency = 350, Q = 1, gainDb = 0 } = {}) {
|
|
66
|
+
const r = new EqEffect();
|
|
67
|
+
|
|
68
|
+
r.filterType = filterType;
|
|
69
|
+
r.frequency = frequency;
|
|
70
|
+
r.Q = Q;
|
|
71
|
+
r.gainDb = gainDb;
|
|
72
|
+
|
|
73
|
+
return r;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {BaseAudioContext} ctx
|
|
78
|
+
* @returns {BuiltAudioEffect}
|
|
79
|
+
*/
|
|
80
|
+
build(ctx) {
|
|
81
|
+
const node = ctx.createBiquadFilter();
|
|
82
|
+
|
|
83
|
+
node.type = EQ_FILTER_TYPE_TO_BIQUAD[this.filterType] ?? 'peaking';
|
|
84
|
+
node.frequency.value = this.frequency;
|
|
85
|
+
node.Q.value = this.Q;
|
|
86
|
+
node.gain.value = this.gainDb;
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
input: node,
|
|
90
|
+
output: node,
|
|
91
|
+
params: [node.frequency, node.Q, node.gain]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param {EqEffect} other
|
|
98
|
+
* @returns {boolean}
|
|
99
|
+
*/
|
|
100
|
+
equals(other) {
|
|
101
|
+
return this.filterType === other.filterType
|
|
102
|
+
&& this.frequency === other.frequency
|
|
103
|
+
&& this.Q === other.Q
|
|
104
|
+
&& this.gainDb === other.gainDb;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
hash() {
|
|
108
|
+
return hash_mix2(
|
|
109
|
+
hash_mix3(
|
|
110
|
+
this.filterType,
|
|
111
|
+
computeHashFloat(this.frequency),
|
|
112
|
+
computeHashFloat(this.Q)
|
|
113
|
+
),
|
|
114
|
+
computeHashFloat(this.gainDb)
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
clone() {
|
|
119
|
+
return EqEffect.from(this);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
toJSON() {
|
|
123
|
+
return {
|
|
124
|
+
filterType: this.filterType,
|
|
125
|
+
frequency: this.frequency,
|
|
126
|
+
Q: this.Q,
|
|
127
|
+
gainDb: this.gainDb
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
fromJSON({ filterType = EqFilterType.Peaking, frequency = 350, Q = 1, gainDb = 0 }) {
|
|
132
|
+
this.filterType = filterType;
|
|
133
|
+
this.frequency = frequency;
|
|
134
|
+
this.Q = Q;
|
|
135
|
+
this.gainDb = gainDb;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
EqEffect.typeName = "SopraEqEffect";
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* What a built EQ can move while it plays. The filter TYPE is structure, not a parameter.
|
|
143
|
+
* @readonly
|
|
144
|
+
* @type {string[]}
|
|
145
|
+
*/
|
|
146
|
+
EqEffect.parameters = ['frequency', 'Q', 'gainDb'];
|
|
@@ -48,5 +48,6 @@ export class ReverbEffect extends AbstractAudioEffect {
|
|
|
48
48
|
export namespace ReverbEffect {
|
|
49
49
|
let typeName: string;
|
|
50
50
|
}
|
|
51
|
+
export type BuiltAudioEffect = import("./AbstractAudioEffect.js").BuiltAudioEffect;
|
|
51
52
|
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
52
53
|
//# sourceMappingURL=ReverbEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReverbEffect.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/effect/ReverbEffect.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReverbEffect.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/effect/ReverbEffect.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;GAWG;AACH;IAcI;;;OAGG;IACH,2CAHW;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAA;KAAC,GACxC,YAAY,CASxB;IAvBD;;;OAGG;IACH,cAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,YAFU,MAAM,CAED;IAqCf;;;OAGG;IACH,cAHW,YAAY,GACV,OAAO,CAKnB;IAED,eAKC;IAED,sBAEC;IAED;;;MAKC;IAED;;;aAGC;CACJ;;;;+BA5GY,OAAO,0BAA0B,EAAE,gBAAgB;oCAH5B,0BAA0B"}
|
|
@@ -4,6 +4,10 @@ import { computeHashFloat } from "../../../../../core/primitives/numbers/compute
|
|
|
4
4
|
import { reverbImpulseResponse } from "../../../simulation/render/reverbImpulseResponse.js";
|
|
5
5
|
import { AbstractAudioEffect } from "./AbstractAudioEffect.js";
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {import("./AbstractAudioEffect.js").BuiltAudioEffect} BuiltAudioEffect
|
|
9
|
+
*/
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
12
|
* Seed for the procedural impulse response. Fixed (not authorable): the IR is a decaying noise tail whose
|
|
9
13
|
* audible character comes entirely from `decaySeconds`/`decayPower`, so the noise realisation carries no
|
|
@@ -58,7 +62,8 @@ export class ReverbEffect extends AbstractAudioEffect {
|
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
64
|
* @param {BaseAudioContext} ctx
|
|
61
|
-
* @returns {
|
|
65
|
+
* @returns {BuiltAudioEffect} no params: the tail is baked into the impulse response at build, so
|
|
66
|
+
* {@link ReverbEffect.parameters} is empty (inherited)
|
|
62
67
|
*/
|
|
63
68
|
build(ctx) {
|
|
64
69
|
const convolver = ctx.createConvolver();
|