micro:bitで遊んでみよう!(8)〜明るさセンサーでオルゴール編〜

皆さんこんにちは。本来のブログ開設目的を忘れつつあるシオナイト(@sheonite)です。今回は初心に帰ります。
micro:bitには様々なセンサー付いており、その一つに明るさセンサーがあります。今回はこれを使って、箱を開けたら音楽が流れるオルゴールのようなものを作ってみたいと思います。冷蔵庫を開けたら音楽が流れるチャイムでも可。
本当は箱を開けたら「ニャ〜」と鳴くシュレーディンガーの猫BOX(意味が違う)を作りたかったのですが、micro:bitで音声を流すのは私の腕前では不可能と判明しましたので、諦めてコナミのアーケード基板「バブルシステム」のウォーミングアップの時に流れる「Morning Music」を演奏してみます。
楽譜を入手する
オールドゲーマーにはかなり懐かしい「Morning Music」。この曲が収録されているCDは何枚か持っているのですが、音楽の才がない私が耳コピーなんか始めてしまうと完成に半年くらいかかってしまいそうなので、素直にグーグル先生に頼ります。
ということで、こちらのサイトで発見。ネットは広大だわ。

これを見ながら音符の下に「レ」とか「シ」とか書いていきます。小学生か(笑)。音楽真面目に勉強しておけば良かったなぁ。
明るさセンサーの設定をする
micro:bitのプログラミングは今までどおり、makecodeのサイトで行います。しばらく来ないうちにデザインが変わってました。

明るさセンサーは0から255の値を返してくるようですので、とりあえず真ん中あたりの128を超えたら指示を実行するようにブロックを組みました。

でもこの数値、何回か試しているうちに、暗めの部屋だと反応しないことがわかりましたので、後で50に変更しています。
ひたすらメロディーを入力
あとはひたすらメロディーを入力するのみです!

ブロックが多くなってきたら、ブラウザの挙動が怪しくなってきました。少し編集するたびにダイヤログが表示されます。

半分くらい入力したところでブロックが8割くらい消えるという泣きたくなるようなアクシデントに見舞われましたがなんとか打ち込み終了。
長ぇよ。これじゃブラウザさまもお怒りになりますよね(笑)。
動かしてみよう(動かないけど)
それでは実機の動画をどうぞ。
マニアの方に言わせると「ここ違うぞ」っていうところが何箇所かあると思いますけどお許しください。付点のところがどうしてもうまく行きませんでした。おそらくmicro:bitのブロックエディタ上の制約だと思うのですが。
あと、最後の方、楽譜どおりではなく少しアレンジして打ち込んでます。アレンジといっても手持ちのCD「MIDI POWER X68000 COLLECTION ver.1.0」に準拠したカタチです。楽譜の方がうまく読めなくて諦めただけなのですが(笑)。
最後に、せっかく打ち込んだのでJavaScriptの方のソースコードを掲載しておきます。需要ないと思いますけど(笑)。
それではまた!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
basic.forever(function () { while (input.lightLevel() >= 50) { music.setTempo(30) music.playTone(294, music.beat(BeatFraction.Quarter)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Sixteenth)) music.playTone(440, music.beat(BeatFraction.Sixteenth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Sixteenth)) music.playTone(294, music.beat(BeatFraction.Quarter)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Half)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(262, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Sixteenth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(262, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(262, music.beat(BeatFraction.Sixteenth)) music.playTone(294, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Eighth)) music.playTone(262, music.beat(BeatFraction.Quarter)) music.playTone(392, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Sixteenth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Half)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Half)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Half)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Eighth)) music.playTone(587, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Quarter)) music.playTone(523, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(523, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(494, music.beat(BeatFraction.Quarter)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(262, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Whole)) music.playTone(294, music.beat(BeatFraction.Half)) music.playTone(294, music.beat(BeatFraction.Quarter)) music.playTone(220, music.beat(BeatFraction.Sixteenth)) music.playTone(294, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Sixteenth)) music.playTone(440, music.beat(BeatFraction.Sixteenth)) music.playTone(494, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Quarter)) music.playTone(220, music.beat(BeatFraction.Sixteenth)) music.playTone(277, music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Sixteenth)) music.playTone(440, music.beat(BeatFraction.Sixteenth)) music.playTone(440, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Quarter)) music.playTone(220, music.beat(BeatFraction.Sixteenth)) music.playTone(247, music.beat(BeatFraction.Sixteenth)) music.playTone(294, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Sixteenth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Eighth)) music.playTone(233, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Sixteenth)) music.playTone(294, music.beat(BeatFraction.Sixteenth)) music.playTone(277, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Sixteenth)) music.playTone(277, music.beat(BeatFraction.Sixteenth)) music.playTone(247, music.beat(BeatFraction.Quarter)) music.playTone(392, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Eighth)) music.playTone(220, music.beat(BeatFraction.Quarter)) music.playTone(440, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(196, music.beat(BeatFraction.Eighth)) music.playTone(247, music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Eighth)) music.playTone(370, music.beat(BeatFraction.Eighth)) music.playTone(392, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(277, music.beat(BeatFraction.Eighth)) music.playTone(294, music.beat(BeatFraction.Whole)) } }) |
ディスカッション
コメント一覧
まだ、コメントがありません