2005/C4

演奏ロボットと演奏に合わせて踊るロボット

片方のRCXはタイヤが二個付いていて、こいつはStarWarsのR2D2役です。

もう片方のRCXは音楽をならすだけです。

全体の動作

R2D2側が赤外線で信号を送ると、もう一方(演奏側)が音楽の演奏を開始します。

演奏の間、R2D2が無駄に動き続けながら、R2D2風の声を出します。

演奏側の演奏が終了したら、演奏側が信号を送り、R2D2側が停止します。

音楽をならすプログラムの作り方

鳴らしたい音の周波数を調べる

Wave編集ソフトを使います。

自分が使いたい曲を口笛で演奏し、それを編集ソフトで録音します。

録音したソフトで口笛波形を拡大し、それをもとに周波数を計算します。

具体的な計算方法

Wave編集ソフトで、口笛波形の中から、10個の波をマウスで選択します。

選択した範囲の秒数が、編集ソフトの下の方に書いてあるのでそれを見ます。

(選んだ10個の波の平均周波数)=(10個)/(選択した範囲の秒数)

この計算式で周波数を計算できます。

つかえるWave編集ソフト

編集ソフトは、AudacityとかでOKだと思います。

Audacityは、Macやwindowsで使えるフリーウェアです。

製作

機械:ひろし & だいすけ

プログラム:ひろし

プログラム1 : R2D2側

task main(){
       ClearMessage();

       Wait(100);
       SendMessage(1);

       until(Message()==100){
               PlayTone(1500,80);
               PlayTone(1600,10);

               OnFwd(OUT_A);
               OnRev(OUT_C);
               Wait(50);

               OnRev(OUT_A);
               OnFwd(OUT_C);
               Wait(70);

               Off(OUT_A+OUT_C);
               Wait(20);

               PlayTone(1650,30);
               PlayTone(1690,80);

       }

}

プログラム2 : 演奏側

task main(){
       ClearMessage();
       until(Message()!=0){
               Wait(1);
       }

       PlayTone(980,80);
       Wait(80+10);
       PlayTone(980,80);
       Wait(80+10);
       PlayTone(980,80);
       Wait(80+10);

       PlayTone(793,70);
       Wait(70+10);

       PlayTone(1124,20);
       Wait(20+5);

       PlayTone(988,100);
       Wait(100+5);

       PlayTone(793,80);
       Wait(80+10);

       PlayTone(1124,20);
       Wait(20+5);

       PlayTone(988,100);
       Wait(100+100);

       //

       PlayTone(1415,80);
       Wait(80+10);
       PlayTone(1415,80);
       Wait(80+10);
       PlayTone(1415,80);
       Wait(80+10);

       PlayTone(1550,90);
       Wait(90+10);

       PlayTone(1193,30);
       Wait(30+5);
       PlayTone(967,80);
       Wait(80+20);

       PlayTone(772,80);
       Wait(80+10);

       PlayTone(1210,30);
       Wait(30+30);

       PlayTone(964,130);
       Wait(130+30);

       SendMessage(100);
}

コメント欄

どうぞ



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-09 (木) 16:36:39