【 第14回 】Scratch 2の楽器の音が圧電スピーカーから出た!

0
1271

前回の【第13回】では圧電スピーカーから、どうにか音を出すことができましたが、とても思い通りの音を出せる状態とは言えませんでした。今回は、”WiringPi“のコマンドとScratch 2に元からあるサウンド機能を組合わせて圧電スピーカーから音を鳴らしてみようと思います。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • 圧電スピーカー(PKM13EPYH4000-A0) × 1
  • 抵抗 1kΩ × 1
  • ジャンプワイヤー(オス/オス) × 3

実体配線図

今回使う部品も配線も【第13回】と同じです。

GPIO12の出力モードをハードウェアPWMに設定する

前回と同じように、LXTerminalを起動して次のコマンドを実行すると、GPIO12の出力モードがハードウェアPWMに設定されます。

gpio -g mode 12 pwm

下のコマンドで実行結果を確認します。

gpio readall

BCM列”12”番の”Mode”列が、既定の”IN”から”ALT0”に変わっています。この拡張機能”ALT0”は、GPIO12の場合、ハードウェアPWMの”0″チャンネルが割り当てられています。

併せて、タスクバー右のスピーカーアイコンを右クリックし、オーディオ出力先として「Analog」を選択しておきます。

Scratch 2の音ライブラリーからhip hopのループを再生する

Scratch 2を起動して、ブロックパレット上のタブ「音」をクリックします。

ブロックパレット上のスピーカーアイコンをクリックします。

カテゴリー「音楽のループ」のブロック「hip hop」を選択し「OK」ボタンをクリックします。

ブロックパレットに「hip hop」が現れるのでスクリプトエリアの「▶」ボタンをクリックして再生します。

Scratch 2のスクリプトで圧電スピーカーから440Hzを鳴らす

ブロックパレット上のタブ「スクリプト」をクリックします。

カテゴリー「音」のブロック「楽器を1▼にする」をスクリプトエリアに引き出します。

ブロック「楽器を1▼にする」の”▼”をクリックして出てきたメニューから「(20) シンセリード」を選択します。

カテゴリー「音」のブロック「60▼の音符を0.5拍鳴らす」をブロック「楽器を20▼にする」の下に繋げます。

ブロック「60▼の音符を0.5拍鳴らす」の”▼”をクリックして出てきた鍵盤から”A(69):440Hz”を選択します。

ブロック「69▼の音符を0.5拍鳴らす」の”0.5″を”20″で上書きします。

できたスクリプトをクリックすると、シンセリードの音でA4:440Hzが鳴ります。

音を止めるには、ステージ右上の赤?ボタンをクリックします。

GPIO12を既定の入力モードに戻しておく

LXTerminal画面に戻って次のコマンドを実行し、GPIO12を既定の入力モードに戻しておきます。

今回は、少し遠回りしましたが、ようやく圧電スピーカーから指定した音階の音を鳴らすことができたので、次回はこれを使ったオルゴールに挑戦してみたいと思います。