Spresense Arduino Library (バージョン1.1.2) のスケッチ例Audio/application/pcm_capture.ino,またAudio/application/pcm_capture_objif.inoを試用しています.

本プログラムを実行しシリアルモニタを開くと,pcm_capture, pcm_capture_objifともに, "Recording Start!" の後数秒間は void signal_process(uint32_t size) 内の printf が実行されているのが見えますが, WARNING: Insufficient buffer area. と出て終了してしまいます.

  1. バッファのデータ構造について

    void signal_process(uint32_t size)

内の

printf("Size %d [%02x %02x %02x %02x %02x %02x %02x %02x ...]\n",
         size,
         s_buffer[0],
         s_buffer[1],
         s_buffer[2],
         s_buffer[3],
         s_buffer[4],
         s_buffer[5],
         s_buffer[6],
         s_buffer[7]);

において,例えばMIC_Aの音の波形データが欲しければ,どのように読み取ればよいのでしょうか?

buffer_size = 6144; /*768sample,4ch,16bit*/

とあるので,s_buffer[0]~[7]のうち2bytesがMIC_Aの1sampleを表していることは予想できますが,(FIFOオーバーフローのためか)サンプルプログラムが途中で終了してしまうため検証が難しいです.

  1. 複数のマイクの音を収集し,リアルタイムにWi-FiでPCに送信するか,SPI通信で他のマイコンに送信したりしたいのですが,

    void signal_process(uint32_t size)

内に処理を追加しても,同様に途中でプログラムが終了してしまうことが考えられます.ストリーミングで外部に波形データを取り出すための適切な方法はありますでしょうか.

  1. また "object if" の "if" はインターフェースの意味なのでしょうか.

よろしくお願いいたします.