この記事をシェアしよう!

前回は、単音でオルゴールのプロジェクトを作ったので、今回は「かえるのうた」のメロディーに和音を付けて輪唱までできればいいなと思います。

今回使った部品

  • 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に設定されます。

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

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を既定の入力モードに戻しておきます

完成したプロジェクト

今回は、3声の輪唱に和音を付けたオルゴールができたので、次回はPCのキーボードを鍵盤に見立てたオルガンができたらいいなと思います。

この記事をシェアしよう!