リアルタイム信号処理をしたい
ラバース 2018/01/01(Mon) 21:18
マイクで録音→信号処理→再生
この流れを行うプログラムを作りたいのです。
そこで2つ疑問に思ったことがあったので質問します。
考えたのがRecorderをループ無し終了するように初期化して、録音されたWaveを取り出して信号処理をしてSoundで再生するというもの。
以下が実際に考えたコードです。
Recorder rec;
rec.open(0, 1s, RecordingFormat::S44100,false);
Wave wav(1s, 44100);
Sound sound(wav);
rec.start();
while (System::Update()) {
if (rec.isEnded()) {
Wave recwav = rec.getWave();
for (size_t i = 0; i < recwav.lengthSample; i++) {
wav[i] = recwav[i];
}
rec.start();
// 波形処理
sound.stop();
sound.fill(wav);
sound.play();
}
}
疑問
1. 録音時間の指定で、SecondsFを用いずサンプル数で指定したい
2. そもそもこの方法では録音停止から波形コピー終了までの間のデータが抜け落ちるのでより良い方法はないか
Reputeless 2018/01/04(Thu) 00:55