ドラム演奏をプログラミングする・・・Scratch:拡張機能の[音楽]カテゴリー

Scratch(スクラッチ)の拡張機能にある[音楽]カテゴリーのブロックを使って、ドラム演奏を行うプログラム例を作りながら、ドラムに関するブロックの使い方とScratchプログラミングの基本を説明します。

【目次】
1.Scratchを起動する
2.演奏するオブジェクトを決める
3.拡張機能の[音楽]カテゴリーを読み込む
4.とりあえず、ドラムを3回鳴らしてみる
5.テンポを変える
6.ドラムの種類を変える
7.ドラム演奏のプログラムを完成させる
8.まとめ

米マサチューセッツ工科大学(MIT)のライフロングキンダーガーテン(生涯幼稚園)グループが開発し、管理運営している、子ども向けプログラミング言語Scratchは、無料で誰でも利用できる、ビジュアルプログラミング言語、すなわち、文字でプログラムを書いて作っていくものではなく、ブロックと呼ばれる命令を絵にしたものを画面上でドラッグアンドドロップによってつなぎ合わせてプログラムを作っていくプログラミング言語です。

今回は、Scratchのオンラインエディターを使って、ドラム演奏を行うプログラムを作りながら、[音楽]カテゴリーのドラム関連の命令語(ブロック)の使い方と、Scratchプログラミングの基本について説明します。

1.Scratchを起動する

今回使用するScratchのオンラインエディターは、インストールすることなしに、インターネットにつながっているコンピューターのブラウザ(ホームページ閲覧ソフト)から、オンラインエディターのホームページを表示するだけで、どなたでも利用できるものです。

Scratch 3.0のオンラインエディターを起動する

ブラウザ上で、オンラインエディターのホームページを表示します。

オンラインエディターを使って、是非、皆様も、Scratchのプログラミングを試してみていただければと思います。

インターネットにつなげたまま作業をするのが難しいという方は、Scratchのオフラインエディター(別名:Scratch Desktop)のご利用をご検討ください。
オフラインエディターは、一度インターネットにつなげてダウンロード&インストールした後は、インターネット無しでも使えます。

このオフラインエディターの設定方法は、こちらのブログ記事「Scratch 3.0 のオフラインエディターのインストール/起動/終了:Scratch Desktop」をご参照ください。

2.演奏するオブジェクトを決める

Scratchのプログラミング概要

Scratchのプログラムは、オブジェクトと呼ばれる対象物の静的な定義と動的な定義を行い、実行時にユーザーなどが発生させるイベントと呼ばれるきっかけに伴って、その動的な定義が動く仕掛けを用意してあるものです。

Scratchのオブジェクトには、スプライトとステージがあります。

上の図で、スプライトは、ねこの絵、ステージは、その背景の白い四角い部分です。

ねこの絵のスプライトの静的な定義とは、ねこの色や形、大きさなどの属性を決めることで、ステージの静的な定義とは、背景の色や図柄などの属性を決めることです。

また、ねこの絵のスプライトの動的な定義とは、画面上の場所を1秒に1㎝ずつ移動する(歩く)とか音を出す(鳴く)ルーチン(Scratchの用語ではスクリプト)を作ることで、ステージの動的な定義とは、背景の色や図柄などを違うものに変えるとか、時間と共に変形させるようなスクリプトを作ることです。

Scratchのスクリプトは、命令(Scratchではブロック)の連続した1つの塊です。

各オブジェクトは、0個~複数個のスクリプトを持つことができます。

Scratchのプログラム全体としては、ユーザーがマウスでクリックしたり、何かのキーを押すなどのきっかけ(Scratchではイベント)で、オブジェクトのどれか1つ以上のスクリプトが動き出すように仕掛けを作っておき、その始まりのきっかけから連動して、あちこちのスクリプトが動くように構成しておきます。

組み込みのオブジェクト(スプライト/ステージの背景)

スプライトの静的な定義を1から行うのは、エディター上で絵を描く操作技術もさることながら、絵のデザインの才能やアイデアが必要なため、時間がかかるし、大変なことです。

Scratchは子ども向けのプログラミング言語ということで、すぐにプログラミングに取り掛かり、すぐに完成できるように、スプライトやステージの背景の静的な定義を、組み込みであらかじめたくさん用意してあります。

また、Scratchは子どもたちのプログラミング学習を容易にするために、CC(クリエイティブコモンズ)のライセンスを採用して、営利非営利に関わらず、再利用を許可しています。

そのため、組み込みのスプライトやステージの背景をベースに、自分の感性で自由にアレンジしたスプライトやステージの背景を作って利用することが可能です。

今回は、演奏をするオブジェクトとして、組み込みのスプライトであり、かつ、Scratchの起動時に自動的に読み込んである、ねこのスプライトを使うことにします。

3.拡張機能の[音楽]カテゴリーを読み込む

音楽のブロックは、Scratchの最新バージョンであるScratch 3.0では、基本機能に入っていません。

今回使用するオンラインエディターは、Scratchの最新バージョンであるScratch 3.0仕様です。

Scratch 3.0では、音楽のブロックは、拡張機能の[音楽]カテゴリーに含まれています。

ちなみに、Scratch 2.0では、音楽のブロックは、基本機能の[音]カテゴリーの中に含まれます。

拡張機能のカテゴリーのブロックには、エディターを起動した直後は、直接アクセスできません。
拡張機能のカテゴリーのブロックを使用するには、ブロックパレットと呼ばれる基本機能のカテゴリーのブロックが表示されている領域に、読み込む作業が必要です。

拡張機能のカテゴリーのブロックを読み込んで使用した後、エディターを終了すると、次のエディターの起動直後のブロックパレットは、デフォルトの状態、すなわち、基本機能のカテゴリーのブロックだけの表示に戻ってしまいます。

拡張機能のカテゴリーのブロックを使うには、エディターの起動ごとに、毎回、その拡張機能のカテゴリーのブロックを読み込む操作が必要です。

拡張機能の[音楽]カテゴリーを読み込む

拡張機能のカテゴリー一覧を表示するには、エディター画面左下の青い四角い(白抜き長方形のブロックの図と+マークが入った図)マークである[拡張機能を追加]ボタンをクリックします。

表示された[拡張機能を選ぶ]ページから、[音楽]カテゴリーの図の上でクリックします。

拡張機能のカテゴリーに関しては、IT企画研究所のブログ記事「Scratchは翻訳や音声合成、もちろん、音楽や図の描画もプログラミングできる!・・・拡張機能のカテゴリー」もご参照ください。

4.とりあえず、ドラムを3回鳴らしてみる

とりあえず、ドラムを3回鳴らしてみます。

[音楽]カテゴリー一番上のブロック[〇のドラムを〇拍鳴らす]ブロックをそのまま3回連続で使います。

ブロックパレットから[〇のドラムを〇拍鳴らす]ブロックをドラッグして、右上にねこのマークが小さく薄く映っているエリア(スクリプトエリアと言います)にドロップします。

ブロックパレットで、もう一度同じブロックをドラッグして、

先にドロップしたブロックの下に、くっつけるようにドロップします。

同じことをさらにもう一度繰り返して、3つめをくっつけます。

今作ったスクリプトを実行してみます。

1つのスクリプトを実行する場合は、そのスクリプトをクリックするだけで実行できます。

「タッタッタッ」と聞こえたでしょうか。

もし、音が聞こえなかった場合は、コンピューターの音量ボタンを探して、音量を調整してみてください。

5.テンポを変える

次にテンポを変えてみたいと思います。

Scratchでは、テンポの単位をBPM、Beat Per Minutes = 1分間当たりの拍数で指定します。

例えば、Scratchでテンポが60のときとは、1秒間に60拍、すなわち、1拍1秒のテンポという意味になります。

現在のテンポの値を確認する

テンポを変えるにあたって、現在のテンポを確認したいと思います。

現在のテンポを値に持つブロックは、[音楽]カテゴリーの[テンポ]ブロックです。

Scratchでは、ブロックパレット内のブロックもクリックすることで実行できます。

[テンポ]ブロックのように、楕円の形をしたブロックは、値ブロックと呼ばれる種類のブロックで、値ブロックはクリックして単独で実行すると、現在のその値が表示されます。

では、ブロックパレット内の[テンポ]ブロックの上でクリックして表示される値を確認します。

[テンポ]ブロックの値は60になっていると思います。

1分に60拍、すなわち、1拍1秒のテンポで設定されていることがわかります。

テンポを30にする

では、テンポを30(1拍2秒の速さ)にしてみたいと思います。

テンポを変えるブロックは、[音楽]カテゴリーの中に2つあります。
1つは、[テンポを〇にする]ブロック、もう1つは、[テンポを〇ずつ変える]ブロックです。
2つとも、〇に入れるのは数字だけですが、その数字の隠れた単位はBPMです。

1つめの[テンポを〇にする]ブロックは、ストレートに変えたいBPMを〇に入力して使用します。
2つめの[テンポを〇ずつ変える]ブロックは、〇に正の数を入力して使った場合は現在のテンポのBPM値に〇の数値を足したBPMに変え、〇に負の数を入力して使った場合は現在のテンポのBPM値から〇の数値を引いたBPMに変えます。

今回は、1つめの[テンポを〇にする]ブロックを使って、テンポのBPM値を30にします。

ドラムの1打目をたたく前に変えておきたいので、先ほど3つつなげたブロックの先頭に、[テンポを〇にする]ブロックをドロップしてつなげます。

そして、今つなげた[テンポを〇にする]ブロックの〇の中に、30と入力します。

スクリプトをクリックして実行します。

先ほどよりも「タッタッタッ」の音の間隔が、遅くなったように感じたでしょうか?

6.ドラムの種類を変える

次にドラムの種類を変えてみたいと思います。

ドラムの種類

Scratch 3.0では、2020年6月現在、次の18種類のドラムの音が用意されています。

(1)スネアドラム

(2)バスドラム

(3)サイドスティック

(4)クラッシュシンバル

(5)オープンハイハット

(6)クローズハイハット

(7)タンバリン

(8)手拍子

(9)クラーベ

(10)ウッドブロック

(11)カウベル

(12)トライアングル

(13)ボンゴ

(14)コンガ

(15)カバサ

(16)ギロ

(17)ビブラステップ

(18)クイーカ

ドラムの種類を変える

今回は、1回目に打つドラムだけ、(1)スネアドラムから(11)カウベルに変えたいと思います。

スクリプトの2つ目のブロック(であり、3回ドラムを鳴らすブロックの中の初めのブロック)の、現在[(1)スネアドラム]となっているところをクリックします。

選択できるドラムのリストが表示されます。

この中から、スクロールして下の方を表示し、[(11)カウベル]をクリックして選択します。

スクリプトの上でクリックして実行し、音を聞いてみます。

1つめのドラムの音は、カウベルの音に変わったでしょうか。

7.ドラム演奏のプログラムを完成させる

それでは、このプログラムに最後の仕上げを施します。

今まで、プログラミングの途中で、作っているスクリプトの動作確認は、そのスクリプトをクリックして実行することで行ってきました。

今のプログラム内容は、エディターでスクリプトが見えている状態であれば、スクリプトをクリックして実行することができるので問題ないのですが、Scratchのプログラムの配布では、スクリプトを隠して、ステージだけの状態で配布することもあります。

ステージだけの状態で配布することも考えると、実行のしようがなくなるので、まだ完成とは言えない状態です。

ということで、ステージだけの配布のときにも動かせるように、仕掛けを作ります。

緑の旗のボタン

Scratchでは、プログラムをエディターで見えるように共有状態で配布するときも、ステージだけを(実行だけできる状態で)配布するときも、いつでも、必ず、緑の旗のボタンと赤い八角形のボタンを、どこかに付けておいてくれます。

緑の旗のボタンは、それをユーザーがクリックしたら、Scratchの基本機能の[イベント]カテゴリーにある[緑の旗が押されたとき]ブロックを先頭に付けたブロックがあれば、そのスクリプトから実行するというものです。

とは言え、Scratchのプログラムは、緑の旗のボタンだけがプログラムの実行を開始できるのではなく、何かのキーを押したり、画面上のスプライトをクリックしたり、ある音量以上の大きな音をを感知したときなど、さまざまなきっかけ、すなわち、イベントから、プログラムの実行を開始するようにプログラミングすることができます。

緑の旗のボタンが用意されているのは、次のような2つの理由からではないかと想像します。

理由の1つめは、プログラムの実行のいろいろなパターンがすべて同等に存在すると、子どもにはじめから全部を教える必要が生じて、大変だからです。

でき上がっているプログラム、例えば、Scratchコミュニティーサイトで公開(共有)されているプログラムは、誰でも自由に実行でき、スクリプトなどのすべてを表示でき、変更もできるので、学習教材にはもってこいですが、その実行1つをとっても、いろいろなパターンをあらかじめ全部教えるのは大変です。
でも、Scratchでプログラミングする人たちの暗黙の了解が、緑の旗をクリックして実行を開始するプログラムを作ることだということを知れば、緑の旗のボタンの操作を教えるだけで、公開されたプログラムの大半のものの実行に子どもたちが成功する可能性があります。
それとともに、プログラミングの先生は、その子どもたちがプログラミング初心者の間は、緑の旗のボタンをクリックして動くプログラムの作り方に注力して教えることができます。

理由の2つめは、緑の旗のボタンから始めるプログラムではなく、別のイベントから始めるプログラムで、いろいろなイベントをきっかけとしてあちこちのスクリプトが呼ばれ合うプログラムを作った場合、作者が説明欄に起動方法の説明を載せていないなど、作者から説明を受けないでプログラムの実行を開始しようとすると、例え、プログラムのすべてを読んでみても、どのスクリプトのイベントから動かしたら、作者が意図する”最初”を動かせるのかがわからないことがあるからです。
説明欄の説明文は、自分が知らない言語で書かれている場合でも、Scratchやブラウザの機能で翻訳できますが、子どもが翻訳の操作をするのは大変だと思いますし、子どもが例え翻訳した文章を入手できたとしても、表示された日本語を理解できない場合もあります(漢字が読めない、言葉が専門的など)もあります。

上記の理由から、とにかく、子どもも含めたたくさんの人に使ってもらいたいプログラムを作るなら、緑の旗をクリックしたら動くプログラムを作ります。

今作っているプログラムも、緑の旗がクリックされたら実行が始まるように作ります。

まず、ブロックパレットで[イベント]カテゴリーをクリックして、[イベント]カテゴリーのブロックを表示します。

一番上にある[緑の旗が押されたとき]ブロックをドラッグし、先に作ったスクリプトの一番上に付けてドロップします。

それでは、ステージ左上にある緑の旗のボタンをクリックして、実行してみます。

また、以下は、Scratchコミュニティーサイトで公開(共有)したこのプログラムのステージだけを、実行できる形で埋め込んだものです。
真ん中に表示される緑の旗か、2回目以降はステージ左上の緑の旗をクリックして実行してみてください。

うまく、ドラムの音が聞こえたでしょうか。

共有したプログラムを表示してエディターで見たり触ったりしたい方はこちらのリンク、説明欄と実行のステージのページ(プロジェクトページと言います)を見たい方は、こちらのリンクからご覧ください。

ストップボタン

赤い八角形のボタンは、ストップボタン、または、強制終了ボタンとも言います。

日本の止まれの標識は違いますが、他の国では止まれの標識は赤い八角形が多く、Scratchのストップボタンもこの形が採用されています。

ストップボタンは、無限ループにはまってしまったときや、プログラムの実行途中に、実行を強制的に終了したいときにクリックします。

8.まとめ

・[音楽]カテゴリーは、拡張機能にあるカテゴリー

→[音楽]カテゴリーにあるブロックを使うには、画面左下のボタンを押して、ブロックパレットに読み込むことから始めます。

・[音楽]カテゴリーの1拍の長さの単位は、BPM(Beat Per Minutes = 1分間当たりの拍数 )

→BPMが60のとき、1拍は1秒です。

以下に、ドラムを鳴らすプログラムを作っているYouTube動画を埋め込みました。
この動画では、テンポをはじめから30BPMに設定し、ドラムは3打ともスネアドラムで音を出す内容になっています。
ご参考までにご覧ください。

コメントを残す