この記事はlittleBits Advent Calendar 2016の25日目の記事です。
デジタルハイク社様にお願いして取り寄せまして、littleBits BLEモジュールを入手できたのでlittleBits BLEモジュールとArduinoモジュールにクリスマスソング(きよしこの夜)を歌ってもらいます。
littleBits BLEモジュールとは
littleBits BLEモジュールとは、先日発売された、スマホアプリからBLE経由でlittleBitsを操作できるモジュールです。
リリース記事としては以下が見つかりました(英文です)
- littlebits.cc
- Engadget
littleBits BLEモジュールのアクティベート
ということで、早速アクティベートします。
相変わらず、可愛いパッケージ。
開封。
技適マークが刻印されています!
littleBits Androidアプリをインストールして。
安定の可愛いチュートリアル。
ログインします。
ID/PASSWORDはlittleBitsアカウントを入れます。
ログインできたらBit Controlsをクリック。
BluetoothをONにします。
BLEモジュールを接続して待ち状態にします。
そうすると、アプリ側のBLE認識画面にBLEモジュールが表示されます。
認識されるとグリーンのランプに!
あとはアプリ内でいろいろな操作が可能です!
このように、スマホシャッフルでオンになったり、スライダーで値がリアルタイムに変わったり、15と表示されているのはBLEモジュールに入ってきた値を表示します。直感的でいいですよね。
きよしこの夜のメロディをつくる
さて、早速。littleBits Arduinoモジュールからシンセスピーカーモジュールで音を鳴らす基礎のメモの知見を元に、きよしこの夜のメロディをつくりましょう。
まず、きよしこの夜の楽譜を探します。
Wikipediaを調べてみると、
楽譜が見つかりました。自分に合うものを探して、
こちらの記事を元にArduinoの音階に置き換えます。(結局、音を聞きながら最後は根性で微調整した気がします )
int tones[47]={392,440,392,330,392,440,392,330,587,587,494,523,523,392,
440,440,523,494,440,392,440,392,330,440,440,523,494,440,392,440,392,330,
587,587,698,587,494,523,659,523,392,330,392,349,294,262,0};
int currentTone = 0;
int currentPush = 0;
void setup() {
pinMode(A0, INPUT);
}
void loop() {
if( currentPush == 0 && digitalRead(A0) == HIGH ){
tone(5,tones[currentTone]); // 音を鳴らす
currentTone++; // 音階をすすめる
if(currentTone>=47){
currentTone = 0;
}
// Serial.println(currentTone);
// Serial.println(tones[currentTone]);
currentPush = 1;
} else if( currentPush == 1 && digitalRead(A0) == LOW ){
currentPush = 0;
}
delay(100);
}
順々に音が流れていくシンプルな仕組みで、リズム感は操作する人のセンスにかかっている仕様。
これをArduinoモジュールに書き込んで、
あとは、POWERモジュール→BLEモジュール→Arduinoモジュール→スピーカーとつなぎます。
BLEモジュールはボタンモードで操作して、あとはリズムよくタップします。
↓
↓
↓
↓
実際の動画です。→ 【初期Ver】littleBits BLEモジュールとArduinoモジュールが歌うクリスマスソング(きよしこの夜) - YouTube
私のリズム感が悪いのか、なんかつたない・・・?
いやいや、 Arduinoモジュールを動かすコードで同じ音が続いたときに、ところどころつまづいていますね。
楽譜上、同じ音が続いているときに、音が切れていないので、続いているように聞こえない(=ただの長音になってしまう)ようです。
ブラッシュアップ
ということで、続いているように聞こえるよう、無音を少しだけ入れるようにします。
int tones[47]={392,440,392,330,392,440,392,330,587,587,494,523,523,392,
440,440,523,494,440,392,440,392,330,440,440,523,494,440,392,440,392,330,
587,587,698,587,494,523,659,523,392,330,392,349,294,262,0};
int currentTone = 0;
int currentPush = 0;
void setup() {
pinMode(A0, INPUT);
}
void loop() {
if( currentPush == 0 && digitalRead(A0) == HIGH ){
// 同じ音階のときに空きを作るため無音delay
tone(5,0);
delay(50); // 同じ音階のときに空きを作るため無音delay
// 音を鳴らす
tone(5,tones[currentTone]);
// 音階をすすめる
currentTone++;
if(currentTone>=47){
currentTone = 0;
}
// Serial.println(currentTone);
// Serial.println(tones[currentTone]);
currentPush = 1;
} else if( currentPush == 1 && digitalRead(A0) == LOW ){
currentPush = 0;
}
delay(100);
}
↓
↓
↓
↓
実際の動画です。→ 【完成】littleBits BLEモジュールとArduinoモジュールが歌うクリスマスソング(きよしこの夜) - YouTube
ちゃんと音の区切りにキレでて、続いているように聞こえるようになりました!
このように、曲を鳴らせられるくらいBLEモジュールのレスポンスはとてもよいので、アプリと連動させていろいろな反応をさせられると、littleBitsでの制作が一層楽しくなりそうですね。また、Arduinoモジュールを経由すれば、PCと経由で、インターネット上の何かの反応とも連携できるので面白そうです。
それでは、よきクリスマスを。