@tencent-rtc/mcp 1.3.1 → 1.3.3

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.
Files changed (87) hide show
  1. package/index.js +4 -0
  2. package/index.js.map +1 -1
  3. package/package.json +1 -1
  4. package/resource/doc/chatuikit/faq/web_sdk/faq.md +125 -0
  5. package/resource/doc/chatuikit/flutter/faq.md +17 -114
  6. package/resource/doc/chatuikit/flutter/integrate_tuikit_Flutter.md +86 -722
  7. package/resource/doc/livekit/live/android/live-audience-list.md +334 -0
  8. package/resource/doc/livekit/live/android/live-audio-effect.md +380 -0
  9. package/resource/doc/livekit/live/android/live-barrage.md +565 -0
  10. package/resource/doc/livekit/live/android/live-base-beauty.md +275 -0
  11. package/resource/doc/livekit/live/android/live-co-guest-interaction.md +629 -0
  12. package/resource/doc/livekit/live/android/live-gift.md +822 -0
  13. package/resource/doc/livekit/live/android/live-host-interaction.md +888 -0
  14. package/resource/doc/livekit/live/android/live-integration.md +972 -0
  15. package/resource/doc/livekit/live/android/live-live-list.md +575 -0
  16. package/resource/doc/livekit/live/android/workflow.md +189 -0
  17. package/resource/doc/roomkit/vue/features/call-user-to-room.md +256 -0
  18. package/resource/doc/roomkit/vue/features/device-detection.md +388 -0
  19. package/resource/doc/roomkit/vue/features/device-state.md +480 -0
  20. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +238 -0
  21. package/resource/doc/roomkit/vue/features/room-chat.md +427 -0
  22. package/resource/doc/roomkit/vue/features/room-participant-state.md +407 -0
  23. package/resource/doc/roomkit/vue/features/room-state.md +291 -0
  24. package/resource/doc/roomkit/vue/features/room-view.md +338 -0
  25. package/resource/doc/roomkit/vue/features/schedule-room.md +349 -0
  26. package/resource/doc/roomkit/vue/features/screen-share.md +333 -0
  27. package/resource/doc/roomkit/vue/features/virtual-background.md +287 -0
  28. package/resource/doc/roomkit/vue/features/workflow.md +553 -0
  29. package/resource/doc/roomkit/vue/integration.md +479 -0
  30. package/resource/doc/roomkit/vue/workflow.md +487 -0
  31. package/resource/doc/tuicallkit/react/api.md +21 -0
  32. package/resource/doc/tuicallkit/vue/api.md +21 -0
  33. package/tools/common/record-prompt.js +2 -2
  34. package/tools/common/record-prompt.js.map +1 -1
  35. package/tools/definitions/get_native_live_extra_features_def.js +87 -0
  36. package/tools/definitions/get_native_live_extra_features_def.js.map +1 -0
  37. package/tools/definitions/get_native_live_interaction_def.js +74 -0
  38. package/tools/definitions/get_native_live_interaction_def.js.map +1 -0
  39. package/tools/definitions/get_native_live_uikit_integration_def.js +49 -0
  40. package/tools/definitions/get_native_live_uikit_integration_def.js.map +1 -0
  41. package/tools/definitions/get_web_room_feature_detail_def.js +95 -0
  42. package/tools/definitions/get_web_room_feature_detail_def.js.map +1 -0
  43. package/tools/definitions/get_web_room_uikit_integration_def.js +44 -0
  44. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -0
  45. package/tools/definitions/record_prompt_def.js +1 -1
  46. package/tools/definitions/record_prompt_def.js.map +1 -1
  47. package/tools/index.js +10 -2
  48. package/tools/index.js.map +1 -1
  49. package/tools/live/get-native-live-uikit-integration.js +101 -0
  50. package/tools/live/get-native-live-uikit-integration.js.map +1 -0
  51. package/tools/live/get-web-live-component-detail.js +1 -1
  52. package/tools/live/get-web-live-component-detail.js.map +1 -1
  53. package/tools/live/get-web-live-state-detail.js +1 -1
  54. package/tools/live/get-web-live-state-detail.js.map +1 -1
  55. package/tools/live/get-web-live-uikit-integration.js +6 -6
  56. package/tools/live/get-web-live-uikit-integration.js.map +1 -1
  57. package/tools/live/get_native_live_extra_features.js +105 -0
  58. package/tools/live/get_native_live_extra_features.js.map +1 -0
  59. package/tools/live/get_native_live_interaction.js +101 -0
  60. package/tools/live/get_native_live_interaction.js.map +1 -0
  61. package/tools/room/get-web-room-feature-detail.js +68 -0
  62. package/tools/room/get-web-room-feature-detail.js.map +1 -0
  63. package/tools/room/get-web-room-integration.js +43 -0
  64. package/tools/room/get-web-room-integration.js.map +1 -0
  65. package/utils/report-cls-client.js +1 -1
  66. package/utils/report-es-client.js +1 -1
  67. package/resource/doc/chatuikit/flutter/integrate_only_tuichat_Flutter.md +0 -333
  68. package/resource/doc/chatuikit/flutter/quick_start_Flutter.md +0 -217
  69. package/resource/doc/roomkit/vue/states/device-state.md +0 -369
  70. package/resource/doc/roomkit/vue/states/login-state.md +0 -59
  71. package/resource/doc/roomkit/vue/states/room-list-state.md +0 -355
  72. package/resource/doc/roomkit/vue/states/room-participant-state.md +0 -388
  73. package/tools/room/get-web-room-state-detail.js +0 -31
  74. package/tools/room/get-web-room-state-detail.js.map +0 -1
  75. /package/resource/doc/livekit/{vue → live/vue}/components/barrage.md +0 -0
  76. /package/resource/doc/livekit/{vue → live/vue}/components/co-guest-panel.md +0 -0
  77. /package/resource/doc/livekit/{vue → live/vue}/components/live-audience-list.md +0 -0
  78. /package/resource/doc/livekit/{vue → live/vue}/components/live-scene-panel.md +0 -0
  79. /package/resource/doc/livekit/{vue → live/vue}/components/live-view.md +0 -0
  80. /package/resource/doc/livekit/{vue → live/vue}/components/stream-mixer.md +0 -0
  81. /package/resource/doc/livekit/{vue → live/vue}/faq.md +0 -0
  82. /package/resource/doc/livekit/{vue → live/vue}/live-list-integration.md +0 -0
  83. /package/resource/doc/livekit/{vue → live/vue}/live-player-desk-integration.md +0 -0
  84. /package/resource/doc/livekit/{vue → live/vue}/live-player-h5-integration.md +0 -0
  85. /package/resource/doc/livekit/{vue → live/vue}/live-pusher-integration.md +0 -0
  86. /package/resource/doc/livekit/{vue → live/vue}/states/live-state.md +0 -0
  87. /package/resource/doc/livekit/{vue → live/vue}/workflow.md +0 -0
@@ -0,0 +1,380 @@
1
+ This document provides guidance on integrating audio effect controls into your live streaming application using the `AudioEffectStore` and `DeviceStore` modules from the **AtomicXCore** framework. These modules enable features such as microphone volume control, ear monitoring, and a variety of voice changing and reverb effects.
2
+
3
+ ![](https://write-document-release-1258344699.cos.ap-guangzhou.tencentcos.cn/100027182498/db216561c6bc11f0a7775254005ef0f7.png)
4
+
5
+
6
+ ## Core Features
7
+
8
+ By combining `AudioEffectStore` and DeviceStore, you can implement the following core features:
9
+ - **Microphone Volume Adjustment**: Control the local microphone (capture) volume, which determines the volume your audience hears.
10
+
11
+ - **Ear Monitoring**: Allow hosts or co-hosts to hear their own voice in real time through headphones for monitoring and pronunciation correction.
12
+
13
+ - **Voice Effects**: Apply various voice changing effects, such as "Little Girl", "Deep Male", "Naughty Child", and more.
14
+
15
+ - **Reverb Effects**: Simulate different acoustic environments, such as KTV, metallic, deep, bright, and others.
16
+
17
+
18
+ ## Core Concepts
19
+ <table>
20
+ <tr>
21
+ <td rowspan="1" colSpan="1" >**Core Concept**</td>
22
+
23
+ <td rowspan="1" colSpan="1" >**Type**</td>
24
+
25
+ <td rowspan="1" colSpan="1" >**Core Responsibility & Description**</td>
26
+ </tr>
27
+
28
+ <tr>
29
+ <td rowspan="1" colSpan="1" >`AudioChangerType`</td>
30
+
31
+ <td rowspan="1" colSpan="1" >`enum`</td>
32
+
33
+ <td rowspan="1" colSpan="1" >Enumerates available voice effects, such as "child", "man", etc.</td>
34
+ </tr>
35
+
36
+ <tr>
37
+ <td rowspan="1" colSpan="1" >`AudioReverbType`</td>
38
+
39
+ <td rowspan="1" colSpan="1" >`enum`</td>
40
+
41
+ <td rowspan="1" colSpan="1" >Enumerates available reverb effects, such as "ktv", "hall", etc.</td>
42
+ </tr>
43
+
44
+ <tr>
45
+ <td rowspan="1" colSpan="1" >`AudioEffectState`</td>
46
+
47
+ <td rowspan="1" colSpan="1" >`data`</td>
48
+
49
+ <td rowspan="1" colSpan="1" >Represents the current state of the audio effect module, typically used for UI rendering. Includes voice effect state, reverb state, ear monitoring enabled state, and ear monitor volume.</td>
50
+ </tr>
51
+
52
+ <tr>
53
+ <td rowspan="1" colSpan="1" >`AudioEffectStore`</td>
54
+
55
+ <td rowspan="1" colSpan="1" >`abstract`</td>
56
+
57
+ <td rowspan="1" colSpan="1" >Singleton data management class for audio effects. Use it to invoke audio effect APIs. After calling an API, the corresponding state property is automatically updated. Subscribe to this reactive state to receive and monitor updates.</td>
58
+ </tr>
59
+
60
+ <tr>
61
+ <td rowspan="1" colSpan="1" >`DeviceState`</td>
62
+
63
+ <td rowspan="1" colSpan="1" >`data`</td>
64
+
65
+ <td rowspan="1" colSpan="1" >Represents the current state of the device module, typically used for UI rendering. Core properties include camera and microphone status.</td>
66
+ </tr>
67
+
68
+ <tr>
69
+ <td rowspan="1" colSpan="1" >`DeviceStore`</td>
70
+
71
+ <td rowspan="1" colSpan="1" >`abstract`</td>
72
+
73
+ <td rowspan="1" colSpan="1" >Singleton data management class for device operations. Use it to control the camera and microphone. After calling an API, the corresponding state property is automatically updated. Subscribe to this reactive state to receive and monitor updates.</td>
74
+ </tr>
75
+ </table>
76
+
77
+
78
+ ## Implementation
79
+
80
+ ### Step 1: Component Integration
81
+ - **Video Live Streaming**: Please refer to [Quick Start](https://write.woa.com/document/194571606056804352) to integrate **AtomicXCore.**
82
+
83
+ - **Voice Chat Room**: Please refer to [Quick Start](https://write.woa.com/document/194571595678187521) to integrate **AtomicXCore**.
84
+
85
+
86
+ ### Step 2: Obtain Store Instances
87
+
88
+ `AudioEffectStore` and `DeviceStore` are singleton objects. Access their instances anywhere in your project via the shared property. For a complete implementation example, see [AudioEffectPanel.kt](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/live/tuilivekit/src/main/java/com/trtc/uikit/livekit/component/audioeffect/AudioEffectPanel.kt) in the TUILiveKit open-source UI demo.
89
+ ``` java
90
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
91
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
92
+
93
+ val audioEffectStore = AudioEffectStore.shared()
94
+ val deviceStore = DeviceStore.shared()
95
+ ```
96
+
97
+ ### Step 3: Implement In-Ear Monitoring
98
+
99
+ Ear monitoring allows users to hear their own microphone audio in real time. Manage ear monitoring using the following APIs.
100
+
101
+ > **Note:**Ear monitoring typically requires headphones to function properly.
102
+ >
103
+
104
+
105
+ #### Implementation
106
+ 1. **Toggle Ear Monitoring**: Use a `Switch` control to enable or disable ear monitoring.
107
+
108
+ 2. **Set Ear Monitor Volume**: Use a `SeekBar` (or similar control) to adjust the ear monitor volume. Map the UI control's value to the [0, 150] range and call setVoiceEarMonitorVolume(volume).
109
+
110
+ 3. **Listen for State Updates**: Subscribe to ear monitor state changes to update the UI in real time.
111
+
112
+
113
+ #### Code Example
114
+ ``` java
115
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
116
+ import kotlinx.coroutines.CoroutineScope
117
+ import kotlinx.coroutines.Dispatchers
118
+ import kotlinx.coroutines.launch
119
+
120
+ // 1. Enable ear monitoring (prompt the user to connect headphones)
121
+ audioEffectStore.setVoiceEarMonitorEnable(true)
122
+
123
+ // 2. Set ear monitor volume
124
+ audioEffectStore.setVoiceEarMonitorVolume(80)
125
+
126
+ // 3. Disable ear monitoring
127
+ audioEffectStore.setVoiceEarMonitorEnable(false)
128
+
129
+ // 4. Listen for state updates
130
+ CoroutineScope(Dispatchers.Main).launch {
131
+ audioEffectStore.audioEffectState.earMonitorVolume.collect {
132
+ print("Ear monitor volume: $it")
133
+ // Update UI with the value
134
+ }
135
+ }
136
+ ```
137
+
138
+ #### setVoiceEarMonitorEnable Parameters
139
+ <table>
140
+ <tr>
141
+ <td rowspan="1" colSpan="1" >**Parameter Name**</td>
142
+
143
+ <td rowspan="1" colSpan="1" >**Type**</td>
144
+
145
+ <td rowspan="1" colSpan="1" >**Description**</td>
146
+ </tr>
147
+
148
+ <tr>
149
+ <td rowspan="1" colSpan="1" >`enable`</td>
150
+
151
+ <td rowspan="1" colSpan="1" >`Boolean`</td>
152
+
153
+ <td rowspan="1" colSpan="1" >Whether to enable ear monitoring.<br>- true: Enable<br>- false: Disable</td>
154
+ </tr>
155
+ </table>
156
+
157
+
158
+ #### setVoiceEarMonitorVolume Parameters
159
+ <table>
160
+ <tr>
161
+ <td rowspan="1" colSpan="1" >**Parameter Name**</td>
162
+
163
+ <td rowspan="1" colSpan="1" >**Type**</td>
164
+
165
+ <td rowspan="1" colSpan="1" >**Description**</td>
166
+ </tr>
167
+
168
+ <tr>
169
+ <td rowspan="1" colSpan="1" >`volume`</td>
170
+
171
+ <td rowspan="1" colSpan="1" >`Int`</td>
172
+
173
+ <td rowspan="1" colSpan="1" >Ear monitor volume.<br>- Range: [0, 150]<br>- Default: 100</td>
174
+ </tr>
175
+ </table>
176
+
177
+
178
+ ### Step 4: Implement Microphone Volume Adjustment
179
+
180
+ To adjust the microphone (capture) volume, call `setCaptureVolume(volume) `on `DeviceStore` with the desired value.
181
+
182
+ #### Implementation
183
+ 1. **Set Capture Volume**: Use a `SeekBar` or similar control to adjust the microphone volume. Map the UI control's value to the [0, 150] range and call `setCaptureVolume(volume)`.
184
+
185
+ 2. **Listen for State Updates**: Subscribe to capture volume state changes to update the UI in real time.
186
+
187
+
188
+ #### Code Example
189
+ ``` java
190
+ import kotlinx.coroutines.CoroutineScope
191
+ import kotlinx.coroutines.Dispatchers
192
+ import kotlinx.coroutines.launch
193
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
194
+
195
+ // 1. Adjust microphone volume
196
+ deviceStore.setCaptureVolume(80)
197
+
198
+ // 2. Listen for volume changes
199
+ CoroutineScope(Dispatchers.Main).launch {
200
+ deviceStore.deviceState.captureVolume.collect {
201
+ print("Capture volume: $it")
202
+ // Update UI with the value
203
+ }
204
+ }
205
+ ```
206
+
207
+ #### setCaptureVolume Parameters
208
+ <table>
209
+ <tr>
210
+ <td rowspan="1" colSpan="1" >**Parameter Name**</td>
211
+
212
+ <td rowspan="1" colSpan="1" >**Type**</td>
213
+
214
+ <td rowspan="1" colSpan="1" >**Description**</td>
215
+ </tr>
216
+
217
+ <tr>
218
+ <td rowspan="1" colSpan="1" >`volume`</td>
219
+
220
+ <td rowspan="1" colSpan="1" >`Int`</td>
221
+
222
+ <td rowspan="1" colSpan="1" >Microphone (capture) volume.<br>- Range: [0, 150]<br>- Default: 100</td>
223
+ </tr>
224
+ </table>
225
+
226
+
227
+ ### Step 5: Implement Voice Effects
228
+
229
+ To apply a voice effect, call `setAudioChangerType(type)` with the desired `AudioChangerType` enum value.
230
+
231
+ #### Code Example
232
+ ``` java
233
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
234
+ import io.trtc.tuikit.atomicxcore.api.device.AudioChangerType
235
+
236
+ // Set voice effect to "Little Girl"
237
+ audioEffectStore.setAudioChangerType(AudioChangerType.LITTLE_GIRL)
238
+
239
+ // Disable voice effect
240
+ audioEffectStore.setAudioChangerType(AudioChangerType.NONE)
241
+ ```
242
+
243
+ #### setAudioChangerType Parameters
244
+ <table>
245
+ <tr>
246
+ <td rowspan="1" colSpan="1" >**Parameter Name**</td>
247
+
248
+ <td rowspan="1" colSpan="1" >**Type**</td>
249
+
250
+ <td rowspan="1" colSpan="1" >**Description**</td>
251
+ </tr>
252
+
253
+ <tr>
254
+ <td rowspan="1" colSpan="1" >`type`</td>
255
+
256
+ <td rowspan="1" colSpan="1" >`AudioChangerType`</td>
257
+
258
+ <td rowspan="1" colSpan="1" >Voice effect enum value.</td>
259
+ </tr>
260
+ </table>
261
+
262
+
263
+ ### Step 6: Implement Reverb Effects
264
+
265
+ To apply a reverb effect, call `setAudioReverbType(type)` with the desired `AudioReverbType` enum value.
266
+ ``` java
267
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
268
+ import io.trtc.tuikit.atomicxcore.api.device.AudioReverbType
269
+
270
+ // Set reverb to "KTV"
271
+ audioEffectStore.setAudioReverbType(AudioReverbType.KTV)
272
+
273
+ // Disable reverb
274
+ audioEffectStore.setAudioReverbType(AudioReverbType.NONE)
275
+ ```
276
+
277
+ #### setAudioReverbType Parameters
278
+ <table>
279
+ <tr>
280
+ <td rowspan="1" colSpan="1" >**Parameter Name**</td>
281
+
282
+ <td rowspan="1" colSpan="1" >**Type**</td>
283
+
284
+ <td rowspan="1" colSpan="1" >**Description**</td>
285
+ </tr>
286
+
287
+ <tr>
288
+ <td rowspan="1" colSpan="1" >`type`</td>
289
+
290
+ <td rowspan="1" colSpan="1" >`AudioReverbType`</td>
291
+
292
+ <td rowspan="1" colSpan="1" >Reverb effect enum value.</td>
293
+ </tr>
294
+ </table>
295
+
296
+
297
+ ### Step 7: Reset Audio Effect Settings
298
+
299
+ > **Note:**
300
+ >
301
+
302
+ > `AudioEffectStore` and `DeviceStore` are singletons, so audio effect and device settings are globally applied. To prevent settings from one live room affecting others, reset audio effect and device settings when the current live room ends.
303
+ >
304
+
305
+
306
+ Reset audio effect settings in the following scenarios:
307
+ 1. When the current live room ends.
308
+
309
+ 2. To provide a "one-click restore" feature, call the`reset()`() method on each store.
310
+
311
+ ``` java
312
+ import io.trtc.tuikit.atomicxcore.api.device.AudioEffectStore
313
+ import io.trtc.tuikit.atomicxcore.api.device.DeviceStore
314
+
315
+ // One-click reset for all voice and reverb effects
316
+ AudioEffectStore.shared().reset()
317
+ DeviceStore.shared().reset()
318
+ ```
319
+
320
+ ## API Documentation
321
+
322
+ For detailed information on all public interfaces and properties of [AudioEffectStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-audio-effect-store/index.html), [DeviceStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html), and their related classes, refer to the official API documentation for the [AtomicXCore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore) framework.
323
+ <table>
324
+ <tr>
325
+ <td rowspan="1" colSpan="1" >**Store/Component**</td>
326
+
327
+ <td rowspan="1" colSpan="1" >**Feature Description**</td>
328
+
329
+ <td rowspan="1" colSpan="1" >**API Documentation**</td>
330
+ </tr>
331
+
332
+ <tr>
333
+ <td rowspan="1" colSpan="1" >AudioEffectStore</td>
334
+
335
+ <td rowspan="1" colSpan="1" >Manage audio effects: configure and retrieve real-time audio effect status.</td>
336
+
337
+ <td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-audio-effect-store/index.html)</td>
338
+ </tr>
339
+
340
+ <tr>
341
+ <td rowspan="1" colSpan="1" >DeviceStore</td>
342
+
343
+ <td rowspan="1" colSpan="1" >Manage devices: control camera and microphone, and retrieve real-time device status.</td>
344
+
345
+ <td rowspan="1" colSpan="1" >[API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.device/-device-store/index.html)</td>
346
+ </tr>
347
+ </table>
348
+
349
+
350
+ ## FAQs
351
+
352
+ ### Are there any restrictions on when to call audio effect and device APIs?
353
+
354
+ No. `AudioEffectStore` and `DeviceStore` settings are globally effective. You can call relevant APIs (such as setting voice effects, reverb, or ear monitoring) at any time before or after entering a live room. Settings take effect immediately and persist.
355
+
356
+ ### What is the difference between "Microphone Volume" and "Ear Monitor Volume"?
357
+
358
+ This is a common point of confusion:
359
+ - **Microphone Volume (Capture Volume)**: Set via `DeviceStore.setCaptureVolume()`. Controls the volume your audience hears.
360
+
361
+ - **Ear Monitor Volume**: Set via `AudioEffectStore.setVoiceEarMonitorVolume()`. It only determines the volume level you hear in your in-ear monitor and does not affect the audience.
362
+
363
+
364
+ ### Why does a newly created live room already have audio effects, or why is the volume too high or too low?
365
+
366
+ Because `AudioEffectStore` and `DeviceStore` are singletons, audio effect and device settings are globally applied. If you previously set audio effects and did not reset them, those settings persist. Call the `reset()` method at the appropriate time to clear them.
367
+
368
+ ### Why can't I hear my own voice after enabling "Ear Monitoring"?
369
+
370
+ Check the following:
371
+ 1. **Are headphones connected?** Ear monitoring generally requires headphones. Ensure wired or Bluetooth headphones are connected.
372
+
373
+ 2. **Is the ear monitor volume set to 0?** Check that the ear monitor volume is above 0.
374
+
375
+ 3. **Is the microphone enabled?** Confirm that the microphone is enabled in DeviceStore (i.e., openLocalMicrophone has been called).
376
+
377
+
378
+ ### Can voice effects and reverb be enabled at the same time?
379
+
380
+ Yes. `AudioChangerType` and `AudioReverbType` can be enabled simultaneously. For example, you can set both `AudioChangerType.LITTLE_GIRL`and `AudioReverbType.KTV` at the same time.