41 esp_codec_dev_handle_t mic_codec_dev = NULL;
43 mic_codec_dev = bsp_audio_codec_microphone_init();
44 if (mic_codec_dev == NULL) {
45 ESP_LOGE(
TAG,
"Not possible to initialize microphone!");
52 ESP_LOGE(
TAG,
"Not possible to initialize FFT esp-dsp from library!");
56 esp_codec_dev_sample_info_t fs = {
63 int result = esp_codec_dev_open(mic_codec_dev, &fs);
65 ESP_LOGE(
TAG,
"Not possible to open microphone!");
69 ESP_LOGI(
TAG,
"Adjust microphone input volume in the code here...");
70 result |= esp_codec_dev_set_in_gain(mic_codec_dev, 20.0);
72 ESP_LOGE(
TAG,
"Not possible to set up microphone gain!");
84 for (
int i = 0 ; i < audio_chunksize; i++) {
85 wind_buffer[i * 2 + 0] = (int16_t)(
result_data[i] * 32767);
86 wind_buffer[i * 2 + 1] = wind_buffer[i * 2 + 0];
92 result = esp_codec_dev_read(mic_codec_dev, audio_buffer, audio_chunksize *
sizeof(int16_t) *
I2S_CHANNEL_NUM);
94 dsps_mul_s16_ansi(audio_buffer, wind_buffer, audio_buffer, audio_chunksize * 2, 1, 1, 1, 15);
104 for (
int i = 0 ; i < audio_chunksize ; i++) {
105 float spectrum_sqr = audio_buffer[i * 2 + 0] * audio_buffer[i * 2 + 0] + audio_buffer[i * 2 + 1] * audio_buffer[i * 2 + 1];
106 float spectrum_dB = 10 * log10f(0.1 + spectrum_sqr);
108 spectrum_dB = 4 * spectrum_dB;
133static int8_t
colors[3][3] = { {0, 0, 31}, {0, 63, 0}, {31, 0, 0} };
138 float i_f = (float)(val - minval) / (float)(maxval - minval) * 2;
144 int8_t *c2 =
colors[Ii + 1];
145 uint16_t res_colors[3];
147 res_colors[0] = c1[0] + If * (c2[0] - c1[0]);
148 res_colors[1] = c1[1] + If * (c2[1] - c1[1]);
149 res_colors[2] = c1[2] + If * (c2[2] - c1[2]);
150 result = res_colors[2] | (res_colors[1] << 5) | (res_colors[0] << 11);
171 for (
int i = 0 ; i < LV_IMG_PX_SIZE_ALPHA_BYTE ; i++) {
195 uint8_t *ref_val = (uint8_t *)&color_val;
220 uint8_t *ref_val = (uint8_t *)&color_val;
256 bsp_display_backlight_on();
258 int ret_val = xTaskCreatePinnedToCore(&
microphone_read_task,
"Microphone read Task", 8 * 1024, NULL, 3, NULL, 0);
259 if (ret_val != pdPASS) {
260 ESP_LOGE(
TAG,
"Not possible to allocate microphone task, ret_val = %i", ret_val);
264 ret_val = xTaskCreatePinnedToCore(&
image_display_task,
"Draw task", 10 * 1024, NULL, 5, NULL, 1);
265 if (ret_val != pdPASS) {
266 ESP_LOGE(
TAG,
"Not possible to allocate microphone task, ret_val= %i", ret_val);
esp_err_t bsp_i2c_init(void)
static void microphone_read_task(void *arg)
static const lv_img_dsc_t img_screen_rgb
static uint8_t screen_rgb_data[(320) *(240) *LV_IMG_PX_SIZE_ALPHA_BYTE]
static uint16_t convert_to_rgb(uint8_t minval, uint8_t maxval, int8_t val)
static float result_data[512]
static void image_display_task(void *arg)
static void spectrum2d_picture_init()
static void spectrum2d_picture()
static int8_t colors[3][3]
esp_err_t dsps_mul_s16_ansi(const int16_t *input1, const int16_t *input2, int16_t *output, int len, int step1, int step2, int step_out, int shift)
Multiply two arrays.