YMZ294をAVRで動かす(4) ~配列をよみこませる~ | 電子楽器の夢をみるのか

電子楽器の夢をみるのか

電子楽器製作をつづる。

さて、前回の配列から好きな音を出すために関数をつくる必要があります。
作ったのがこちら
void setTone(unsigned int x ,unsigned char SQU){
    switch(SQU){
        case 0:
        Output(0x00,Note[x] & 0xff);
        Output(0x01,(Note[x] >>8) & 0x0f);
        break;
        case 1:
        Output(0x02,Note[x] & 0xff);
        Output(0x03,(Note[x] >>8) & 0x0f);
        break;
        case 2:
        Output(0x04,Note[x] & 0xff);
        Output(0x05,(Note[x] >>8) & 0x0f);
        break;
    }
}

この関数の最初の行にある変数xに数値を代入することで音を出します。例えばド(=262Hz)を出したいときは60と入力すればいい( `・ω・´ )ラ(=440Hz)なら69。ちなみにMIDIのノート番号と一緒にしてます。
ここでもう一つ変数SQUが出てきますがこれは音の割り振り。YMZ294は3音同時に出すことができます。SQUを0から2に設定することで3音を割り振りすることができます。
関数の使い方はこう
setTone(60,0);
これでAchにド(=262Hz)の高さの音をだすという命令になります。
さぁこのプログラムを組み込んで動かそう!と思った矢先、ハードウェア的な問題が、tiny2313に書き込もうと思ったら

プログラムのデータが大きすぎて書き込めないみたい(´・ω・`)

ちょっと考えてみます。つづく