やっとドレミがでました。

正確にはドレミではなく、正確には440Hzから1オクターブたかい880Hzまでの各音階(という呼び方であってるのかな?)の音ですが。

つまり、時報とかで聞くラの音から1オクターブずれたラの音までの各音階をならせたということです。


alsaライブラリを使って音を鳴らす方法は以前の日記

Introduction to Sound Programming with ALSA その5 - malibu-bulldogの日記

Introduction to Sound Programming with ALSA その4 - malibu-bulldogの日記

に書いたとおりです。

つまり、今回はドミファソラシの各音階の音データを作ったわだけです。

音データの作り方はshortの配列で作るとしたらまず、各音階の周波数を求めます。

ある音階の周波数を求めるにはそれが基準の440からどれくらいずれているか、

ラの1つ高い音階の周波数fは

f = 440 \times 2^{1/12}

としてもとまります。

この周波数でsin波のデータをてきとうな時間間隔で作り、一定の振幅(振幅の大きさが音の大きさになりますが)でかけざんしてあげればきれいな音のデータとなります。