01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2011-08-31 Wed
■ Arduinoで音楽演奏 [dolittle]
大学1年生向けの授業で、Arduinoに傾きを検知する3軸加速度センサ(Wii
リモコンと同じ原理)を載せて、ドリトルの音楽演奏と組み合わせてみま
した。X軸が音階、Y軸が打楽器です。
演奏している様子をYouTubeに置きました。
Arduinoと3軸加速度センサの配線は、「ドリトルで学ぶプログラミングの
仕組み[第2版]」の110ページの回路です。
これはプログラムです。2つの配列に打楽器と2オクターブの音階を入れて、
入力値に応じた楽器と音階を演奏しています。メロディの楽器には17番の
ドローバーオルガンを使いました。
打楽器=配列!(ドラム!"ド" 作る)(ドラム!"タ" 作る)(ドラム!"ツ" 作る)作る。
打楽器数=打楽器!要素数?。
音階=配列!作る。
音階名=配列!”ド" "レ" "ミ" "ファ" "ソ" "ラ" "シ” 作る。
音階名!「|x| 音階!(メロディ!("_"+x)作る)入れる」それぞれ実行。
音階名!「|x| 音階!(メロディ!(x)作る)入れる」それぞれ実行。
音階数=音階!要素数?。
システム!"arduino" 使う。
a=Arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
xin=a!0 アナログ入力。yin=a!1 アナログ入力。zin=a!2 アナログ入力。
x値=フィールド!作る。y値=フィールド!作る。z値=フィールド!作る。
「
x=xin!読む。y=yin!読む。z=zin!読む。
x値!(x)書く。y値!(y)書く。y値!(y)書く。
x楽器=楽器!17 作る。
x=(x-70)*音階数/100。
x楽器!(音階!(x)読む)設定。
y=(y-70)*打楽器数/100。
y楽器=打楽器!(y)読む。
バンド!作る 400 テンポ(x楽器)(y楽器)追加 演奏 待つ。
」!1000 繰り返す。
a!とじろごま。
これは授業で使ったプログラムです。配列を使わなくて済むように、入力
値を条件分岐(if)で判断して音階などを決定する例で示しました。
システム!"arduino" 使う。
a=Arduino!作る。
a!(システム!シリアルポート選択)ひらけごま。
xin=a!0 アナログ入力。yin=a!1 アナログ入力。zin=a!2 アナログ入力。
x値=フィールド!作る。y値=フィールド!作る。z値=フィールド!作る。
x楽器=楽器!17 作る。
「
x=xin!読む。y=yin!読む。z=zin!読む。
x値!(x)書く。y値!(y)書く。y値!(y)書く。
「x<100」!なら「音階="ド"」実行。
「x>=100」!なら「音階="ミ"」実行。
x楽器!(メロディ!(音階)作る)設定。
「y<100」!なら「たいこ="ド"」実行。
「y>=100」!なら「たいこ="タ"」実行。
y楽器=ドラム!(たいこ)作る。
バンド!作る 300 テンポ(x楽器)(y楽器)追加 演奏 待つ。
」!1000 繰り返す。
a!とじろごま。
コメントする / 全部見る
[ 固定リンク ]
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2012-08-19 23:58