Cassis始め

とりあえず、2つ目。
wavファイルでも書き出す辺りを。

use v5.14;
use strict;
use warnings;

use Cassis;
use constant SAMPLING_RATE => 44100;

my $dco = Cassis::DCO::Sin->new( fs => SAMPLING_RATE );
$dco->set_freq( 440 );
my $wav = $dco->exec( num => SAMPLING_RATE ); # 1sec

Cassis::File::write(
    file => '440.wav',
    fs => SAMPLING_RATE, channels => [ $wav ] );

こんな感じで、とりあえず1秒間の正弦波を出力できる。
書き出す前に決めておく必要があるサンプリング周波数は、
SAMPLING_RATEのところで、いわゆる”CDの音質”である44.1kHzと定義している。
書き出し時にの量子化ビット数も、
“CDの音質”と同じ16bitがデフォルト値になっている。

ちなみに、”CDの音質”っていう単語は、
Windows95の簡易レコーダーみたいなので見かけた気がするんだけど、
ちょっと記憶が曖昧ですね。

ちなみに、量子化ビット数を8bitにすると、少しノイジーな感じになる。
出力方法は、bits => 8を追加するだけ。(*1)

Cassis::File::write(
    file => '440_8bit.wav',
    fs => SAMPLING_RATE, channels => [ $wav ], bits => 8 );

今日はここまで。

おしまい。

(*1) 8bitのときに正しく書き出せないバグは、さっき直したので再取得してね!

Leave a Comment