前回迷路をゴールした時にメリーさんの羊を演奏しましたが、
それだと長くてテンポが悪く感じます。
そこで今回は短くインパクトのあるドラクエのレベルアップ音を単音ではなく
2音を疑似的に使って演奏してみましょう。
疑似的に2音で演奏する
参考資料をチェック
前回で紹介したこの動画ですが、これを見ると楽譜が表示されているので
それを入力していきましょう。
自分は鍵盤の方が直感的に音階が判るので鍵盤を見て入力しています。
2音用に関数を作る
void bwdq(int y, int yy, float w, float ww) { int x; SET_BUZZER_FREQ(w); //周波数を設定 ENABLE_BUZZER; //ブザーを発振させる for(x = 0; x < y; x++) //X回繰り返す { SET_BUZZER_FREQ(ww); //音(周波数)を変更する wait_ms(yy*7); //待ち時間 SET_BUZZER_FREQ(w); //音(周波数)を変更する wait_ms(yy*4); //待ち時間 } DISABLE_BUZZER; //ブザーの発振を停止させる }
2つの音を同じ長さで流すより、強調したい方の音を長く流す様にwait_msで調整します。
void bwdq2(int y, int yy, float w, float ww) { int x; SET_BUZZER_FREQ(w); //周波数を設定 ENABLE_BUZZER; //ブザーを発振させる for(x = 0; x < y; x++) //X回繰り返す { SET_BUZZER_FREQ(ww); //音(周波数)を変更する wait_ms(yy*6); //待ち時間 SET_BUZZER_FREQ(w); //音(周波数)を変更する wait_ms(yy*5); //待ち時間 } DISABLE_BUZZER; //ブザーの発振を停止させる }
2種類の関数を用意しましたが、これは個人の好みで1つでも3つでも変えたら良いでしょう。
音階を入力していく
void goal_appealtdqlvw(void) { int s=3,e=10,q=15,h=15,b=5,cc=12,cc2=80; bwdq(s,b,DOX_FREQ,FAX_FREQ); wait_ms(cc); //待ち時間 bwdq(s,b,SI_FREQ,FAX_FREQ); wait_ms(cc); //待ち時間 bwdq(s,b,RAE_FREQ,FAX_FREQ); wait_ms(cc); //待ち時間 bwdq(s,b,RA_FREQ,FAX_FREQ); wait_ms(cc2+cc*2); //待ち時間 bwdq(s,b,SO_FREQ,REXE_FREQ); wait_ms(cc2+cc); //待ち時間 bwdq(s,b,RAE_FREQ,SOX_FREQ); wait_ms(cc2+cc); //待ち時間 bwdq2(h,b,RA_FREQ,FAX_FREQ); wait_ms(cc); //待ち時間 }
この様な感じになりました。
では、鳴らしてみましょう。
これくらいの長さなら、何か他に利用価値があるかもしれません。
まとめと次回予告
ここまで出来れば、後は細かい改造で色々な曲が作れる様になっていると思います。
そこで、次に作る曲は
これです
凄い難しそうですが、実はこれまでやってきた事をそのまま使って作れちゃいます。
また、先出しでどんな風になるか紹介しておきます。
次回は具体的な作り方を書いていきます。