はじめての Octave

Playrec を使って、リアルタイムに入力音声信号のパワーを計算するコードを書いてみました。なにぶん初めてなので、変なところがあるかも知れませんが。

% $Id$

function[] = sigpow()

sample_rate = 44100;

[recDevId, recDev] = select_rec_device;
if playrec('isInitialised')
    playrec('reset');
end
playrec('init', sample_rate, -1, recDevId)

playrec('delPage');
while true
    page = playrec('rec', sample_rate, 1);
    playrec('block', page);
    [recBuffer, recChanList] = playrec('getRec', page);
    sum = recBuffer' * recBuffer / length(recBuffer);
    fprintf("pow = %.2f dB\n", log(sum)/log(10)*10);
    fflush(stdout);
end