Closed dingxiao88 closed 1 year ago
未移植前運作正常嗎?
未移植前工作正常能播放歌曲,移植后也能播放歌曲。 问题是移植后audio_process_i2s并未被调用执行,没有显示歌曲律动图。 不知audio_process_i2s函数是否是I2S后台自动调用的,还是需要再loop函数中显式调用的? 请指教,再次感谢。
即是移植中出錯?
不应该定义为是移植出错,移植完成后,能正常播放音乐,但是我还想在TFT显示屏中看到歌曲律动条状图(FFT_Level_Meter)。 而歌曲律动条状图(FFT_Level_Meter)是在audio_process_i2s函数中绘制的,目前发现I2S后台没有自动调用该函数(audio_process_i2s)。
void audio_id3data(const char *info)
{ // id3 metadata
Serial.print("id3data ");
Serial.println(info);
}
void audio_eof_mp3(const char *info)
{ // end of file
Serial.print("eof_mp3 ");
Serial.println(info);
}
void audio_process_i2s(uint32_t* sample, bool *continueI2S)
{
Serial.println("audio_process_i2s"); //@-简单查看函数是否被调用
raw_data[raw_data_idx++] = *sample;
if (raw_data_idx >= WAVE_SIZE)
{
fft.exec((int16_t *)raw_data);
// draw_fft_level_meter(gfx);
draw_fft_level_meter(tft);
raw_data_idx = 0;
}
*continueI2S = true;
}
上述3个函数中的audio_id3data的数据可以在后台串口正常输出内容。
我自认为audio_process_i2s函数也是I2S自动调用的,但是事实上并未被自动调用执行。
所以想请教你audio_process_i2s是否需要在程序的其他地方显式调用该函数。
but the original example can call audio_process_i2s()?
我从来没有尝试过使用audio_process_i2s函数。这是我第一次尝试这么做。
Can you run I2S_FFT_Level_Meter.ino success?
感谢您的耐心回复,我已找到问题的所在,关键点是在Audio库的版本。 1.我目前正常使用的是Audio的2.0.3版,该版本中并未定义audio_process_i2s接口。 2.Audio版本升级至最新的3.0.0版,发现存在audio_process_i2s接口。 但是我尝试将Audio升级至最新的3.0.0版,发现已不能正常播放音乐,在3.0.0版本下我还需要再重新测试。 再次感谢你的耐心回复,谢谢。
更换至3.0.0后,经测试一切正常,感谢你提供的优秀源码。
moononournation你好,感谢你提供的LVGL_Music_Player项目源码,我在尝试其中的I2S_FFT_Level_Meter项目时遇到了一些问题,想请教下你。 问题: 在移植I2S_FFT_Level_Meter后,程序能够成功编译并运行,可以播放音乐。 但是,发现audio_process_i2s函数不会被调用,不知道问题发生在哪里,希望能指教,谢谢。
代码:测试核心代码为:
并在audio_process_i2s中增加了调用打印: