前回は、単音でオルゴールのプロジェクトを作ったので、今回は「かえるのうた」のメロディーに和音を付けて輪唱までできればいいなと思います。
今回使った部品
- Raspberry Pi 3 Model B × 1
- 40Pinフラットリボンケーブル
- 40Pin T型GPIO拡張ボード
- ブレットボード × 1
- 耳もとキューブスピーカー(ダイソー) × 1
- 3.5mmイヤホンジャックアダプター × 1
- ジャンプワイヤー(オス/オス) × 2
実体配線図
今回、スピーカーを100均で見つけたものに変えてみました。ブレッドボードには3.5mmイヤホンジャックアダプターを介してGPIO12とGNDに接続します。スピーカーはモノラルなのでジャンプワイヤーはアダプターの端子3極の内、L,RどちらかとGNDに接続します。
GPIO12の出力モードをハードウェアPWMに設定する
前回と同じように、LXTerminalを起動して次のコマンドを実行すると、GPIO12の出力モードがハードウェアPWMに設定されます。
gpio -g mode 12 pwm
下のコマンドで実行結果を確認します。
gpio readall
BCM列”12”番の”Mode”列が、既定の”IN”から”ALT0”に変わっています。この拡張機能”ALT0”は、GPIO12の場合、ハードウェアPWMの”0″チャンネルが割り当てられています。
併せて、タスクバー右のスピーカーアイコンを右クリックし、オーディオ出力先として「Analog」を選択しておきます。
予め、新たなプロジェクトを別名で保存しておく
Scratch 2を起動し、メニューバーから「ファイル▼」→「Load Project」をクリックします。
ファイル選択画面が現れるので、今回のプロジェクトのベースとする【第15回】で作ったプロジェクト”frog_song.sb2″を選択して、「開く」ボタンをクリックします。
すると、「Replace contents of the current project?」画面が現れるので、「OK」ボタンをクリックします。
メニューバーの「ファイル▼」をクリックして出てきたメニューから「プロジェクトを保存」を選択します。
プロジェクトの保存先を開き、項目「名前:」の入力蘭に拡張子”.sb2″はそのままで今回のプロジェクト名を入力し、「保存」ボタンをクリックします。
和音に用いる音階ブロックを追加しておく
「かえるのうた」に付ける和音は、1オクターブ下の”そ”と”ど”だけです。
前回、音階ブロックの並べ方が上下逆だったので、並べ替えておきます。1番上の音階”72″のコメントの”▶”クリックして編集画面を表示します。
コメント編集画面の”ド”を”高ド”で上書きし、”▼”をクリックしておきます。
カテゴリー「音」のブロック「60▼の音符を0.5拍鳴らす」を2つスクリプトエリアに引き出します。
引き出したブロックの上側の”▼”をクリックし、出てきた鍵盤から”G(55)”を選択します。
ブロック「55▼の音符を0.5拍鳴らす」をクリックし、出てきたメニューから「コメントを追加」を選択して、”低ソ”を入力しておきます。
引き出したブロックの下側の”▼”をクリックし、出てきた鍵盤から”低いド(48)”を選択します。
ブロック「48▼の音符を0.5拍鳴らす」をクリックし、出てきたメニューから「コメントを追加」を選択して、”低ド”を入力しておきます。
ブロック「55▼の音符を0.5拍鳴らす」をクリックして複製します。
スクリプトエリアを拡げておいてから、複製したブロック「55▼の音符を0.5拍鳴らす」を16個繋げておきます。
続けて、ブロック「48▼の音符を0.5拍鳴らす」もクリックして複製し、16個繋げておきます。
前回、4分音符を0.5拍としたのは誤りなので1拍に、4分休符も1拍、8部音符を0.5拍に上書きします。今回追加する和音は2分音符なので、ブロック32箇所共全て、2拍で上書きします。
和音のブロックをカテゴリー「制御」のブロック「ずっと」で包み込ませます。
もうひとつの和音のブロックもカテゴリー「制御」のブロック「ずっと」で包み込ませます。
2つの和音のブロックの上に、カテゴリー「音」のブロック「楽器を1▼にする」を繋げます。
上に載せた2箇所のブロック「楽器を1▼にする」の”▼”をクリックして出てきたメニューから(20)シンセリードを選択します。
2つの和音のブロックの上に、カテゴリー「イベント」のブロック「(緑の)旗がクリックされたとき」を繋げます。
プロジェクトを実行してみる
ステージ上の緑の旗をクリックしてプロジェクトを実行します。
テンポが異常に遅く、間延びして聞こえます。音を止めるには、ステージ上の赤?ボタンをクリックします。
テンポを速くする
カテゴリー「音」のブロック「テンポを60BPMにする」の”60″を”100″で上書きします。
できたブロック「テンポを100BPMにする」を和音のスクリプト2箇所のブロック「(緑の)旗がクリックされたとき」の下に割り込ませます。
もう一度、プロジェクトを実行してみる
ステージ上の緑の旗をクリックしてプロジェクトを実行します。
このくらいでテンポはいいみたいです。音を止めるには、ステージ上の赤?ボタンをクリックします。
「かえるのうた」と言えば輪唱、やってみました
スクリプトエリアを更に拡げて、主旋律のスクリプトをクリックし、複製します。
複製した主旋律のスクリプトを更にクリックし、複製します。
複製した主旋律スクリプトのブロック「ずっと」の上、2箇所にカテゴリー「音」のブロック「0.25拍休む」を割り込ませます。
左から2番目の主旋律スクリプトに割り込ませたブロック「0.25拍休む」の”0.25″を2小節分の”8(拍)”で上書きします。
左から3番目の主旋律スクリプトに割り込ませたブロック「0.25拍休む」の”0.25″を4小節分の”16(拍)”で上書きします。
できたプロジェクトを実行する
ステージ上の緑の旗をクリックしてプロジェクトを実行します。
音を止めるには、ステージ上の赤?ボタンをクリックします。
完成したプロジェクトを上書き保存する
メニューバーの「ファイル▼」をクリックして出てきたメニューから「プロジェクトを保存」を選択します。
項目「名前:」の入力蘭に、このプロジェクト名が表示されていることを確認して、「保存」ボタンをクリックします。
「上書きしてもよろしいですか?」画面が現れるので、「置き換える」ボタンをクリックします。
GPIO12を既定の入力モードに戻しておく
LXTerminal画面に戻って次のコマンドを実行し、GPIO12を既定の入力モードに戻しておきます
gpio -g mode 12 in