前回、音楽ブロックを使うための基礎知識について記事を書きましたので、今回は音楽ブロックを使って音楽を演奏するプログラムを作っていきます。
演奏するのはパブリックドメインの楽曲の中からアメリカ民謡の「I’ve Been Working on the Railroad(日本語の曲名:線路は続くよどこまでも)」を選びました。
この記事を読んでいただくと、ピアノのMIDI音源をつかって楽曲を演奏するプログラミングの方法が分かります。
完成品
この章の内容をご自身のScratch環境に反映すると、同じ動きを再現することができます。
完成した動き
「緑の旗でスタート」ボタンを押すと『線路は続くよどこまでも』をピアノで弾いた感じの音楽が流れ始めます。
音楽が流れている間は「演奏中」のロゴが表示され、演奏が終わると消えます。
使用したスプライト
スプライトは「ネコ」と「ロゴ」の2つです。
【ネコのスプライト】
スプライトは何でも良いのですが、Scratchで新規プロジェクトをつくると最初に登場するスプライトを使用します。
【ロゴのスプライト】
新規にスプライトをつくって「演奏中」の文字をタイピングします。画像をベクターモードに変換して「テキスト」ツールを使うとやり易いと思います。
スプライト以外に演奏する楽曲の楽譜も必要になります。下に楽譜を示していますので参考にしてください。
完成したスクリプト
完成したスクリプトの全体です。
【ネコのスクリプト】
【ロゴのスクリプト】
スクリプトの作り方
ここからはプログラムを作っていく中でポイントとなる部分を説明します。
ポイント①:楽譜から音階と拍を読み取る
今回演奏する『線路は続くよどこまでも』の楽譜から、音階(音の高さ)と拍(音の長さ)を読み取ります。
楽譜については、下の五線譜または本やネットの情報を参考にしてください。いくつかの種類があると思いますが好きなものを使ってください。
上の五線譜の音符を読み取っていくと、「ファ ド ファ ド ファ ソ・ラ ファ・シ♭ シ♭ ファ ソ・ラ・ファ ド ファ ド ファ ソ・ラ ファ・ソ ソ ソ ラ・ソ・ソ ソ ファ# ソ ラ ソ・ファ ド・シ♭ シ♭ ファ ソ・ラ・レ ミ ファ ミ ファ レ・ド ファ・ラ シ♭ ラ ソ・ファ」という音が並んでいることが分かります。
また、音符の形を見るとドレミ(音の高さ)だけでなく拍(音の長さ)も分かります。
下図は前回の記事に記載した表の縮小版ですが、今回使用している音符や休符の記号に赤四角をつけました。中央の列に拍数の記載がありますが、この数値が真横の記号を使用した時の拍(音の長さ)になっています。
このように音符を読み取るだけで、どの音がどの位の長さ鳴らすのかが分かります。
これらのもっと詳しい内容については、前回の記事で解説していますのでこちらを参照してください。↓↓↓
ポイント②:読み取った音符を数値に置き換えてブロックに設定する
ポイント①で読み取った音階(音の高さ)と拍(音の長さ)を音楽ブロックに設定する数値に置き換えます。
低い「ド」の音(ピアノの鍵盤でいうと真ん中の「ド」)を数字の60となることを基準として数字に置き換えると「65 60 65 60 65 67 69 65 70 70 65 67 69 65 60 65 60 65 67 69 65 67 67 67 69 67 67 67 66 67 69 67 65 60 70 70 65 67 69 62 64 65 64 65 62 60 65 69 70 69 67 65」という並びになります。
また、拍についてはポイント①ですでに数字で表現されているので変換は必要ありません。
このようにして読み取った音階と拍を「~の音符を~拍鳴らす」ブロックに設定して縦につなげていくことで楽曲を演奏することができます。
ポイント③:楽譜からテンポを読み取ってブロックに設定する
テンポは数字を大きくすれば速い曲に、小さくすれば遅い曲になりますし、曲の途中でテンポを変更することもできます。
楽譜どおりに設定するのであれば、下の図のように「4分音符♩=100」と書いてある数字を「テンポを~にする」ブロックに設定すればOKです。
ここまでのポイントを押さえれば、ピアノのMIDI音源をつかって楽曲を演奏するためのスクリプトを完成させることができると思います。
失敗しやすいポイント
失敗しやすいポイントはありません。
応用編
今回応用編は特にありません。
まとめ
さいごに、今回の記事で説明した『ピアノのMIDI音源をつかって楽曲を演奏するプログラミング』のポイントをまとめます。
- ポイント①:楽譜から音階と拍を読み取る
- ポイント②:読み取った音符を数値に置き換えてブロックに設定する
- ポイント③:楽譜からテンポを読み取ってブロックに設定する
音符から音の高さ(ドレミ)と拍(音の長さ)を読み取る部分さえクリアすれば、特に難しいところは無かったかと思います。
ただ、特に音楽のような芸術的な分野では、あまり理屈ばかりになっても面白くないのでブロック内に仕込まれている鍵盤を叩いてみて1つ1つ耳で確かめながら音を決めて作り上げていく方が楽しいかもしれません。
今回ポイント①で表示した楽譜にはコード(F・G・B♭・C)も表示しましたので、次回はこのコードをつかってベースを混ぜて演奏させてみたいと思います。
どうでしたか?上手く再現できたでしょうか?
他にも役に立つTips(ティップス)記事をたくさん書いてますので、ぜひ見てみてください。(記事のタイトルに「Tips」と書いていたり「Tips」タグを貼ってあります)