音の正体は空気の振動。IchigoJamの部品、サウンダーに電圧がかけたり(1)、かけなかったり(0)することで、サウンダー内にある金属板が上下に動き、その空気の振動が耳に伝わり、それを人は音として認識します。 例えば、ラの音を鳴らすとき、ラの周波数は440Hz、1秒間に440回のペースでON/OFFを繰り返せばいいわけです。440連打!
決まった時間でON/OFFするのは、コンピューターの得意技!フルカラーLEDを制御したように、1秒の880分の1の時間だけ待ってON、同じ時間だけ待ってOFFを繰り返せばOK。 LEDを点滅させるのと同じ要領ですね。エルチカすごい!
ただ、コンピューターが音だけに全力を使ってしまうと、ゲームが動きません。そこで便利な、コンピューター向け目覚まし時計的機能、タイマーです。 タイマーは指定した時間が経ったら教えてくれたり、自動的にON/OFFしてくれたりしてくれます。 タイマーを使えば、ゲームやツールを動かしながら、音を奏でることができるわけです。
ただ、このタイマーという機能の数は有限です。 いままではIchigoJamでは画面の表示とロボット制御用のPWMでタイマーを使っていっぱいいっぱいでした。 音用には画面表示のタイマーを流用したため、細かな周波数が出ず、特に高音域で音痴だったわけです。
IchigoJam R、RISC-Vの新しいコンピューターはタイマーが豊富。 サーボ制御もいままでの4つから6つに増え、更に音専用にも使えます!
IchigoJam Rβ と IchigoJam S で聴き比べながら開発し、βファームウェア公開しました。計算上の周波数誤差はいままでの最大5%から、最大0.04%(O5A+)まで下がりました。
IchigoJam BASIC 1.5b04 ファームウェア (RISC-V版 IchigoJam R用)
- IchigoJam 1.5β4
音程の調整 BEEP/PLAY
(ファームウェアの書き換えには、「IJUtilities」が便利です!)