【 第15回 】GPIOに接続したスピーカーでオルゴール!

0
2627

前回、”WiringPi“のコマンドとScratch 2に元からあるサウンド機能を組合わせて圧電スピーカーから楽器の音を鳴らしたので、今回はこれを使ったオルゴールのスクリプトを作ってみようと思います。

今回使った部品

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

実体配線図

回路は【第14回】と同じですが、圧電スピーカーの音圧が低かったので音圧の高いものに変更しました。

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

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

gpio -g mode 12 pwm

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

gpio readall

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

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

1オクターブ分の音階ブロックを作っておく

Scratch 2を起動し、カテゴリー「音」のブロック「60▼の音符を0.5拍鳴らす」を8つ、スクリプトエリアに繋げておきます。

上から2つ目のブロックの”▼”をクリックし、出てきた鍵盤から”D(62)”を選択します。

上から3つ目のブロックの”▼”をクリックし、出てきた鍵盤から”E(64)”を選択します。

上から4つ目のブロックの”▼”をクリックし、出てきた鍵盤から”F(65)”を選択します。

上から5つ目のブロックの”▼”をクリックし、出てきた鍵盤から”G(67)”を選択します。

上から6つ目のブロックの”▼”をクリックし、出てきた鍵盤から”A(69)”を選択します。

上から7つ目のブロックの”▼”をクリックし、出てきた鍵盤から”B(71)”を選択します。

上から8つ目のブロックの”▼”をクリックし、出てきた鍵盤から”高いド(72)”を選択します。

1番上のブロックをクリックし、出てきたメニューから「コメントを追加」を選択します。

コメント入力欄に”ド”を入力します。

コメント入力欄の”▼”をクリックして”▶”にしておきます。

同じ要領で、1オクターブの音階にコメントを入力しておきます。

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

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

ブロック「楽器を20▼にする」をクリックして1オクターブの音階を鳴らして確認します。

音階が確認できたら、スクリプトを右端に寄せて、全てのブロックを切り離しておきます。

音符毎のブロックを繋いでメロディーを組立てる

オルゴールのメロディーは右の「かえるのうた」にしてみました。

楽譜に並んだ音符の順に、必要な音階のブロックを右クリックして複製し、縦に繋いでいきます。最初は”ど”の音なのでブロック「60▼の音符を0.5拍鳴らす」を右クリックして複製し、スクリプトエリアの左側に置きます。

次は”れ”なのでブロック「62▼の音符を0.5拍鳴らす」を右クリックして複製し、「60▼の音符を0.5拍鳴らす」の下に繋げます。

同じ要領で、7音繋いだ後に休止符があるので、カテゴリー「音」のブロック「0.25▼拍休む」を下に繋げます。

更に7音繋いだ後に、再び休止符があるので、カテゴリー「音」のブロック「0.25▼拍休む」を下に繋げます。

同じ要領で、楽譜の最後の休止符まで、ブロックを繋げます。

7箇所の休止符が全て4分休符なので、7箇所のブロック「0.25▼拍休む」の”0.25″を”0.5″で上書きします。

7小節目の音符が全て8分休符なので、7小節目のブロック「*▼の音符を0.5拍鳴らす」の”0.5″を8箇所全て”0.25″で上書きします。

できたメロディーのスクリプトをカテゴリー「制御」のブロック「ずっと」で抱え込ませます。

スクリプトエリアの右側に寄せておいたブロック「楽器を20▼にする」をスクリプトの上に繋げます。

更にその上に、カテゴリー「イベント」のブロック「(緑の)旗がクリックされたとき」を繋げます。

オルゴールのプロジェクトを実行する

ステージ上の緑の旗をクリックしてプロジェクトを実行します。

メロディーが正しく鳴ったでしょうか?
おかしなところがあった場合は、楽譜とブロックの並び方が合っているか、もう一度確認してみましょう。

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

完成したオルゴールのプロジェクトを保存する

メニューバーの「ファイル▼」をクリックして出てきたメニューから「プロジェクトを保存」を選択します。

プロジェクトの保存先を開き、項目「名前:」の入力蘭に拡張子”.sb2″はそのままで今回のプロジェクト名を入力し、「保存」ボタンをクリックします。

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

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

完成したプロジェクト

今回は、単音でオルゴールのプロジェクトを作ってみましたが、Scratch 2には複数の音を同時に鳴らせる機能があるので、次回は今回のメロディーに和音を付けてみたいと思います。