1# Audio Effect Management 2 3You can manage the audio effect of a specific playback instance, for example, obtaining or setting the audio effect mode of the current audio playback stream. You can obtain the global audio effect, that is, the audio effect mode corresponding to a specific audio stream usage, which is specified by [StreamUsage](../../reference/apis-audio-kit/js-apis-audio.md#streamusage). 4 5## Managing the Audio Effect of a Playback Instance 6 7You can call [getAudioEffectMode()](../../reference/apis-audio-kit/js-apis-audio.md#getaudioeffectmode10) and [setAudioEffectMode(mode: AudioEffectMode)](../../reference/apis-audio-kit/js-apis-audio.md#setaudioeffectmode10) to obtain and set the [audio effect mode](../../reference/apis-audio-kit/js-apis-audio.md#audioeffectmode10) of the current audio playback stream. The audio effect mode can be disabled (**EFFECT_NONE**) or default (**EFFECT_DEFAULT**). In the default audio effect mode, the audio effect of the corresponding scenario is automatically loaded based on [StreamUsage](../../reference/apis-audio-kit/js-apis-audio.md#streamusage) of the audio stream. 8 9### Creating a Playback Instance 10 11Before the management, you must call [createAudioRenderer(options: AudioRendererOptions)](../../reference/apis-audio-kit/js-apis-audio.md#audiocreateaudiorenderer8) to create an **AudioRenderer** instance. 12 131. Import the audio module. 14 15 ```ts 16 import { audio } from '@kit.AudioKit'; 17 ``` 18 192. Configure audio rendering parameters and create an **AudioRenderer** instance. For details about the audio rendering parameters, see [AudioRendererOptions](../../reference/apis-audio-kit/js-apis-audio.md#audiorendereroptions8). For the **AudioRenderer** instance, the audio effect mode **EFFECT_DEFAULT** is used by default. 20 21 ```ts 22 import { BusinessError } from '@kit.BasicServicesKit'; 23 24 let audioStreamInfo: audio.AudioStreamInfo = { 25 samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000, 26 channels: audio.AudioChannel.CHANNEL_2, 27 sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, 28 encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW 29 }; 30 31 let audioRendererInfo: audio.AudioRendererInfo = { 32 usage: audio.StreamUsage.STREAM_USAGE_MUSIC, 33 rendererFlags: 0 34 }; 35 36 let audioRendererOptions: audio.AudioRendererOptions = { 37 streamInfo: audioStreamInfo, 38 rendererInfo: audioRendererInfo 39 }; 40 let audioRenderer: audio.AudioRenderer | undefined = undefined; 41 42 audio.createAudioRenderer(audioRendererOptions, (err: BusinessError, data: audio.AudioRenderer) => { 43 if (err) { 44 console.error(`Invoke createAudioRenderer failed, code is ${err.code}, message is ${err.message}`); 45 return; 46 } else { 47 console.info('Invoke createAudioRenderer succeeded.'); 48 audioRenderer = data; 49 } 50 }); 51 ``` 52 53### Obtaining the Audio Effect Mode of the Playback Instance 54 55 ```ts 56 import { audio } from '@kit.AudioKit'; 57 import { BusinessError } from '@kit.BasicServicesKit'; 58 59 audioRenderer.getAudioEffectMode((err: BusinessError, effectMode: audio.AudioEffectMode) => { 60 if (err) { 61 console.error(`Failed to get params, code is ${err.code}, message is ${err.message}`); 62 return; 63 } else { 64 console.info(`getAudioEffectMode: ${effectMode}`); 65 } 66 }); 67 ``` 68 69### Setting an Audio Effect Mode for the Playback Instance 70 71Disable the system audio effect. 72 73 ```ts 74 import { audio } from '@kit.AudioKit'; 75 import { BusinessError } from '@kit.BasicServicesKit'; 76 77 audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_NONE, (err: BusinessError) => { 78 if (err) { 79 console.error(`Failed to set params, code is ${err.code}, message is ${err.message}`); 80 return; 81 } else { 82 console.info('Callback invoked to indicate a successful audio effect mode setting.'); 83 } 84 }); 85 ``` 86 87Enable the default system audio effect. 88 89 ```ts 90 import { audio } from '@kit.AudioKit'; 91 import { BusinessError } from '@kit.BasicServicesKit'; 92 93 audioRenderer.setAudioEffectMode(audio.AudioEffectMode.EFFECT_DEFAULT, (err: BusinessError) => { 94 if (err) { 95 console.error(`Failed to set params, code is ${err.code}, message is ${err.message}`); 96 return; 97 } else { 98 console.info('Callback invoked to indicate a successful audio effect mode setting.'); 99 } 100 }); 101 ``` 102 103## Obtaining the Global Audio Effect Mode 104 105Obtain the global audio effect mode corresponding to a specific audio stream usage, which is specified by [StreamUsage](../../reference/apis-audio-kit/js-apis-audio.md#streamusage). 106 107For an audio playback application, pay attention to the audio effect mode used by the audio stream of the application and perform corresponding operations. For example, for a music application, select the audio effect mode for the music scenario. Before obtaining the global audio effect mode, call **getStreamManager()** to create an **AudioStreamManager** instance. 108 109### Creating an AudioStreamManager Instance 110 111Before using **AudioStreamManager** APIs, you must use **getStreamManager()** to create an **AudioStreamManager** instance. 112 113 ```ts 114 import { audio } from '@kit.AudioKit'; 115 116 let audioManager = audio.getAudioManager(); 117 let audioStreamManager = audioManager.getStreamManager(); 118 ``` 119 120### Querying the Audio Effect Mode of the Corresponding Scenario 121 122 ```ts 123 import { audio } from '@kit.AudioKit'; 124 import { BusinessError } from '@kit.BasicServicesKit'; 125 126 audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MUSIC, async (err: BusinessError, audioEffectInfoArray: audio.AudioEffectInfoArray) => { 127 if (err) { 128 console.error('Failed to get effect info array'); 129 return; 130 } else { 131 console.info(`getAudioEffectInfoArray: ${audioEffectInfoArray}`); 132 } 133 }); 134 ``` 135