Sonic¶
The Sonic component acts as a multidimensional filter that lets you adjust audio parameters of a WAV stream. This functionality may be useful to e.g. increase playback speed of an audio recording by a user selectable rate.
The following parameters can be adjusted:
- speed
- pitch
- interpolation type
The adjustments of the first two parameters are represented by float values that provide the rate of adjustment. For example, to increase the speed of an audio sample by 2 times, call sonic_set_pitch_and_speed_info(el, 1.0, 2.0)
. To keep the speed as it is, call sonic_set_pitch_and_speed_info(el, 1.0, 1.0)
.
For the interpolation type you may select either faster but less accurate linear interpolation, or slower but more accurate FIR interpolation.
Application Example¶
Implementation of this API is demonstrated in audio_processing/pipeline_sonic example.
API Reference¶
Functions¶
-
esp_err_t
sonic_set_info
(audio_element_handle_t self, int rate, int ch)¶ Sets the audio sample rate and the number of channels to be processed by the sonic.
- Return
- ESP_OK ESP_FAIL
- Parameters
self
: Audio element handlerate
: The sample rate of stream datach
: The number channels of stream data
-
esp_err_t
sonic_set_pitch_and_speed_info
(audio_element_handle_t self, float pitch, float speed)¶ Sets the audio pitch and speed to be processed by the sonic.
- Return
- ESP_OK ESP_FAIL
- Parameters
self
: Audio element handlepitch
: Scale factor of pitch of audio file. 0 means the original pitch. The range is [0.2 4.0].speed
: Scale factor of speed of audio file. 0 means the original speed. The range is [0.1 8.0].
-
audio_element_handle_t
sonic_init
(sonic_cfg_t *config)¶ Creates an Audio Element handle for sonic.
- Return
- The sonic audio element handle
- Parameters
config
: The sonic configuration
Structures¶
-
struct
sonic_info_t
¶ Information on audio file and configuration parameters required by sonic to process the file.
Public Members
-
int
samplerate
¶ Audio file sample rate (in Hz)
-
int
channel
¶ Number of audio file channels (Mono=1, Dual=2)
-
int
resample_linear_interpolate
¶ Flag of using simple linear interpolation. 1 indicates using simple linear interpolation. 0 indicates not using simple linear interpolation.
-
float
pitch
¶ Scale factor of pitch of audio file. If the value of ‘pitch’ is 0.3, the pitch of audio file processed by sonic islower than the original. If the value of ‘pitch’ is 1.3, the pitch of audio file processed by sonic is 30% higher than the original.
-
float
speed
¶ Scale factor of speed of audio file. If the value of ‘speed’ is 0.3, the speed of audio file processed by sonic is 70% slower than the original. If the value of ‘speed’ is 1.3, the speed of audio file processed by sonic is 30% faster than the original.
-
int
-
struct
sonic_cfg_t
¶ Sonic configuration.