51438


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)

内の

[code]

    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]);
    
[/code]

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

[code]

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

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

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

void signal_process(uint32_t size)

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

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

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


CC BY-SA 4.0
2018-12-21T08:28:07.737
51420
2018-12-22T09:37:02.527
31544
question
arduino spresense
Spresense-Arduino のスケッチ例 pcm_capture が終了してしまう．音声波形データを外部に取り出したい


void signal_process(uint32_t size)  
等を例にすると、  
そのまま動かすコードではないと思います。

一例ですが、48kHzサンプリングのデータを、  
printfするのは、馴染まない気がしますので、  
例えば、1024回に1回だけ表示されるとかがいいと思います。


CC BY-SA 4.0
2018-12-22T09:37:02.527
51438
2018-12-22T09:37:02.527
31548
51420
answer