PI:Co製作(宇野)

Pi:Co製作(宇野)マイクロマウス研修Part28 疑似和音を鳴らす

Pi:Co製作(宇野)マイクロマウス研修Part28 疑似和音を鳴らす PI:Co製作(宇野)

前回はBEEP音で疑似和音を作る考え方について書きました。

今回は曲を作る為に実際に疑似和音を鳴らせる様にします。

BEEP音を使った疑似和音で曲を作る(準備)

音を鳴らす為の準備段階 その1

void bwc(int y, int yy, float w)
{
  int x;
  SET_BUZZER_FREQ(w); //周波数を設定
  ENABLE_BUZZER; //ブザーを発振させる
  for(x = 0; x < y; x++) //y回繰り返す
  {
    SET_BUZZER_FREQ(MI_FREQ); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
    SET_BUZZER_FREQ(w); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
    SET_BUZZER_FREQ(SO_FREQ); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
    SET_BUZZER_FREQ(w); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
    SET_BUZZER_FREQ(DO_FREQ); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
    SET_BUZZER_FREQ(w); //音(周波数)を変更する
    wait_ms(yy); //待ち時間
  }
  DISABLE_BUZZER; //ブザーの発振を停止させる
}

前回特に説明を入れてなかったので、変数について詳しく見ていきましょう。

int y

この数値で音を鳴らす時間を調節します。

ここを大きくする事で長く音を鳴らします。

int yy

これは和音として重ねる音と音の間隔の長さです。

これが短過ぎるとそもそも音が鳴らなかったり、長過ぎると重なって聴こえません。

ここは何かしらハード面などで個体差があるかもしれないので、

外部から入力していつでも簡単に数値調整できるようにします。

float w

ここに音階の周波数を入れます。

直接523.25(ド)等の数値を入れても良いですが、前もって音階を定義したので

DO_FREQ(ド)という記述で入れる事にします。

変数まとめ

この3つが基本的な部分です。

実際曲を作る時に変えるのはyとwだけで、yyは最初の調整段階で決めれば

特に変える事はありません。

 

音を鳴らす為の準備段階 その2

int s=5,e=10,q=15,h=20,b=5,cc=5,cc2=20;
bw0(e,b,MIX_FREQ);//和音なし
wait_ms(cc); //待ち時間
bwc(s,b,MIX_FREQ);//C和音
wait_ms(cc+cc2); //待ち時間
bwc(s,b,REX_FREQ);
wait_ms(cc+cc2); //待ち時間
bw0(e,b,DOX_FREQ);
wait_ms(cc+cc2); //待ち時間
bwc(e,b,REX_FREQ);
wait_ms(cc+cc2); //待ち時間
bw0(e,b,MIX_FREQ);
wait_ms(cc+cc2); //待ち時間
bwc(e,b,MIX_FREQ);
wait_ms(cc+cc2); //待ち時間
bw0(e,b,MIX_FREQ);
wait_ms(cc+cc2); //待ち時間
bwc(e,b,0);
wait_ms(cc); //待ち時間

メリーさんの羊の出だし部分を書き出しました。

これを使って先ほどの変数に何を入れるか見てみましょう。

試作段階で調整し易くする為に上に変数を並べてますが、この辺は数値が決まれば

どこかに纏めても良さそうですね。

では説明に入ります。

int s,e,q,h

この4つの変数は音の長さを表しています。

eが1拍、4分音符とするならsが1/2拍、8分音符といった感じです。

複雑に音を出す場合、この数値も細かく分ける必要がありますが、

メリーさんの羊ではそこまで必要ないので2つの長さで表現します。

int b

これが、和音を作る為の重ねる音の間隔となります。

最初はこの数値の調整から入る事になると思います。

int cc

鳴らした和音と次の和音との間隔の時間です。

int cc2

音にメリハリをつける為に少し多めに間をとる為の追加時間です。

まとめ

では今の状態でどんな音が出るか聴いてみましょう。

単音で鳴らすより、音楽っぽい雰囲気が出ていると思います。

このやり方で次回はメリーさんの羊を最後まで作っていきます。

タイトルとURLをコピーしました