『子供の科学』2020年8月号の別冊付録
「QRコードプログラミングBOOK」は読んでくれたかな?
![QRコードプログラミングBOOK表紙](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/01-714x1024.jpg)
今回はこの付録の中で紹介
した「QRジュークボックス」を改造
して、演奏
する楽器
やテンポ、音符
の拍
を指定
できるようにしてみよう。別冊付録で紹介したコードを元にして改造をしていくよ。まずは別冊付録を読んでQRジュークボックスのしくみを確認
しておこう。改造前のコードは特設サイトの「3.3 プロジェクト#3 QRジュークボックス」からダウンロードすることができるぞ。
1 改造前のQRジュークボックス
最初に改造する前のQRジュークボックスのコードについて、整理
をしておこう。QRコードの拡張機能
が使えるScratchを使って、以下のようなコードをつくっておいた。
![QRジュークボックスのコード(改造前)](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/02.png)
緑
の旗
をクリックするとQRコードが読み取れるまで待ち、読み取りが完了すると変数の「数」を1ずつ増やしながら、QRコードの文字のASCIIコードを音階
に変換
して演奏をするというしくみだ。
きらきら星のメロディーを演奏するためのQRコードは以下のようになるね。
![きらきら星のQRコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/03.png)
このコードだと、全ての音符を0.25拍で鳴らしているので、原曲
と雰囲気
が少し違
うし、楽器の選択
などもできないという問題
がある。今回はQRコードに記録
する音楽データを設計
しなおして、楽器・テンポ・音階・拍を保存
し、より原曲に忠実
な演奏ができるジュークボックスに改造してみよう。
2 音楽データの再設計
まずは音楽データをどのようにQRコードに保存
するかを考えてみよう。これまでは音階の数字に対応する文字をQRコードに保存していたね。きらきら星のはじめについて図にしてみると、以下のようになっていた。
![きらきら星のQRコードをASCIIコードに変換](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/04-1024x466.png)
今回はQRコードの内容の先頭
に「テンポ」と「楽器」の情報
を格納
するようにして、その後にメロディーとなる「音階」と「拍」をセット(1つの音に関して情報が2つ)にして保存するようにしてみよう。つまり以下のような内容をQRコードに記録していくことにしよう。
![改造後のQRコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/05-1024x182.png)
きらきら星のメロディーを、テンポを「60」、楽器を「クラリネット(楽器の番号は10)」に設定をして、演奏する場合について考えよう。拍についても必要
な音は伸ばすようにしてみるよ。
QRコードを使わずに、ブロックを使って演奏する場合のはじめの方は以下のようになる。QRコードを読み取ったときに、このコードをつくったのと同じ演奏ができるようになればOKだ。
![きらきら星の冒頭](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/06.png)
ここで考えなければいけない問題が2つあるぞ。順番
に解決策
を考えていこう。
1つ目は楽器の選択の方法だ。Scratchでは楽器に番号がついていて、1から21までの21種類
が選べるようになっている。
![スクラッチでの楽器の選択](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/07.png)
QRコードに演奏したい楽器の番号を記録しておけばよいのだけれど、1から21に対応するASCII(アスキー)コードの文字はNULL(ヌル)文字や改行
などの特殊
な文字で、これをQRコードに記録することはできない。QRコード作成サイトを使ってうまく記録できる文字のASCIIコードは33(「!」)から126(「~」)の間なので、少し工夫が必要だね。先頭の楽器の番号については、読み取った文字のASCIIコードから「32」を引いた数に設定するようにしておくという方法にしよう。
例えば、楽器の番号が「1」のピアノを設定したい場合は、ASCIIコードが33の「!」を記録しておけばよいことになる。つまりASCIIコードの数字をシフトするという作戦
だ。テンポについてはほとんどの場合がそのまま設定できるので、文字のASCIIコードをそのまま設定しよう。
![QRコードの内容をASCIIコード変換してスクラッチのプログラムに設定](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/08-1024x611.png)
2つ目の問題は拍の指定方法だ。Scratchで音楽を演奏する場合、例えばテンポを60にした場合は、4分音符の拍は1、8分音符の拍は0.5にすればよい。つまり、1や0.5といった小さな数値を指定する必要がある。
テンポを指定できるようにするので、テンポを速く(大きく)して、指定する拍の数字も大きくするという方法もあるけれど、拍として指定する数字のパターンは多くないので、違う方法で拍を指定してみよう。
全音符、2分音符、4分音符、8分音符、16分音符の5種類の拍を指定できるとして、それぞれをQRコードに記録できる範囲
のASCIIコードの文字に対応させて記録することにしよう。ABCDEのそれぞれの文字に5種類の音符を対応させたルールを考えてみたぞ。
![各音符に対応する文字と、設定する拍](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/09-1024x901.png)
このルールに従うと、きらきら星の最初の1小節
を演奏するQRコードのデータは「<C<CCCCCECECCB」となる。1音目の音階と拍を表現した「<C」は「<」のASCIIコードの「60」が音階、拍が「C」で1拍となるというしくみだ。次からこのルールに基づいてQRコードをメロディーに変換するコードをつくってみよう。
3 テンポと楽器を読み取る
まずはテンポと楽器を読み取って設定するコードからつくってみよう。QRコードを読み取るところまでは同じで、テンポ(QRコードの1番目の文字をASCIIコードにしたもの)と楽器(2番目の文字をQRコードしたものから、32を引いたもの)を設定するコード(赤枠
)を追加しよう。
![テンポと楽器を読み取って設定するコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/10_a.png)
4 指定された音階と拍で演奏する
次に音階を指定した拍で演奏する部分をつくっていこう。まずは拍を設定するための分岐
の部分をつくってみよう。拍を保存しておくための「拍」という変数を、すでにつくってある「数」の変数に追加してつくろう。
![新しく変数「拍」をつくる](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/11-1024x486.png)
次は変数「拍」を指定した数字に設定する分岐を作成しよう。A(65)、B(66)、C(67)、D(68)、E(69)のそれぞれのASCIIコードによって、全音符から16分音符までを設定する。数という変数を1ずつ増やしながらQRコードの内容を演奏していくので、数+1番目の文字を読み取って拍を決めればよいね。
![拍を指定した数字に設定する分岐](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/13.png)
最後に音階を読み取って演奏をする部分と組み合わせよう。テンポと楽器を読み取った後の3文字目から順番にQRコードの情報を読み取るぞ。何番目を読み取りしているかを保存しておく変数「数」は3からスタートさせよう。この「数」を2ずつ増やしながら、音階の数分(QRコードの長さからテンポと楽器のデータの2文字を引いて、半分にした)だけ繰
り返していくよ。
![音階を読み取って演奏する部分と組み合わせたコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/14.png)
これでも演奏はできるけれど、拍を決める部分が少し長いので、ブロック定義
で「拍を決める」というブロックをつくって分割
してみよう。引数
にはASCIIコードを指定するようにして、ルールに従って変数「拍」の値を設定する。演奏のコードからは定義したブロックを使って、拍を決めるようにしてみた。これでコードがわかりやすくなったね。
![ブロック定義で「拍を決める」というブロックをつくってつくったコード](http://www.kodomonokagaku.com/wp-content/uploads/2020/07/15_1.png)
![ブロック定義「拍を決める」のコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/15_2.png)
このコードで演奏ができる『きらきら星』のQRコードを掲載
しておこう。クラリネットで演奏するぞ。
![きらきら星のQRコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/16.png)
QRコードのつくり方は別冊付録でも解説をしたけれど、以下のような文字列をQRコード作成サイトでQRコードに変換
すればOKだ。
<*<C<CCCCCECECCBACAC@C@C>C>C<BCCCCACAC@C@C>BCCCCACAC@C@C>B<C<CCCCCECECCBACAC@C@C>C>C<B
最後に『夕焼け小焼け』をフルートで演奏するQRコードを掲載しておこう。自分の好きな曲をQRコードにして演奏して楽しんでみてね。
![夕焼け小焼けのQRコード](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/17.png)
今回改造したQRジュークボックスのコードは以下からダウンロードできるぞ。リンク先にアクセスをして、zipファイルをダウンロードしてね。zipで圧縮
されているので、解凍
して、できたsb3ファイルを読み込んで使用してね。
<文/杉浦 学(鎌倉女子大学)>
![](https://www.kodomonokagaku.com/wp-content/uploads/2020/07/koka8_hyosi-1.jpg)
子供の科学2020年8月号
特集ではサイエンスアーティスト・YouTuberとしても活躍している市岡元気先生の実験術を伝授! とじ込み付録は図形認識能力が身につく算数パズル「三食問題の謎を解け」。出題されている問題をパズルで解いてみよう!
8月号の詳細はこちら