chibi:bitで音声
マイコンボードのchibi:bit,今日は音声出力を試してみた。
わかりにくいけど,ブレッドボードの上にあるのがレシーバ(スピーカ)。
携帯電話の受話用などに使うようなレシーバなので,耳元で鳴らす程度。これをchibi:bitのP0とGNDに接続。
で,chibi:bitのIDEで次のようなプログラムを作成して,転送。
120bpmでドとレミを交互にならすだけ。で,正常に鳴ることを確認。
じゃあ,ドレミの歌かえるの歌を演奏させてみようということで,これはブロックエディタでは大変(配列が扱えない)なので,javascriptで。
じゃあ,輪唱もということで試してみたのだけど,残念ながら,出力は排他的で,勝手に音声を合成してくれるわけじゃなかった。そりゃそうか。
2017/3/27 21:36
いくつか,本質的ではない間違いがあったので,修正。
わかりにくいけど,ブレッドボードの上にあるのがレシーバ(スピーカ)。
携帯電話の受話用などに使うようなレシーバなので,耳元で鳴らす程度。これをchibi:bitのP0とGNDに接続。
で,chibi:bitのIDEで次のようなプログラムを作成して,転送。
120bpmでドと
じゃあ,
let REST = 0
let C4 = 0
let B3 = 0
let A3 = 0
let G3 = 0
let F3 = 0
let E3 = 0
let D3 = 0
let C3 = 0
basic.forever(() => {
})
C3 = 262
D3 = 294
E3 = 330
F3 = 349
G3 = 392
A3 = 440
B3 = 494
C4 = 523
REST = -1
let song = [C3, D3, E3, F3, E3, D3, C3, REST,
E3, F3, G3, A3, G3, F3, E3, REST,
C3, REST, C3, REST, C3, REST, C3, REST,
C3, D3, E3, F3, E3, D3, C3, REST]
function playSong() {
let i = 0
let v = 0
for (i = 0; i < song.length; ++i) {
v = song[i]
if (v < 0) {
music.rest(music.beat(BeatFraction.Whole))
} else {
music.playTone(v, music.beat(BeatFraction.Whole))
}
}
}
music.setTempo(120)
control.inBackground(() => {
playSong()
})
動かしてみたら,ちゃんと演奏できた。じゃあ,輪唱もということで試してみたのだけど,残念ながら,出力は排他的で,勝手に音声を合成してくれるわけじゃなかった。そりゃそうか。
2017/3/27 21:36
いくつか,本質的ではない間違いがあったので,修正。
コメント
コメントを投稿