Scratch(スクラッチ)の拡張機能にある[音楽]カテゴリーのブロックを使って、「ぶんぶんぶん」をチェロの音色で演奏するプログラム例を作りながら、組み込みの楽器の音色での演奏に関するブロックの使い方とScratchプログラミングの基本を説明します。
【目次】1.Scratchを起動する
2.演奏するオブジェクトを決める
3.拡張機能の[音楽]カテゴリーを読み込む
4.ピアノの音を3回鳴らしてみる
5.テンポを変える
6.「ぶんぶんぶん」の最初の3音を鳴らしてみる
7.楽器の種類を変える(チェロに変える)
8.休符を挟む(始めの2小節の音を作る)
9.チェロの演奏のプログラムを完成させる
10.まとめ
(この記事の
<1.Scratchを起動する >
<2.演奏するオブジェクトを決める >
<3.拡張機能[音楽] カテゴリーを読み込む >
は、ブログ記事「ドラム演奏をプログラミングする・・・Scratch:拡張機能の[音楽]カテゴリー」の
<1.Scratchを起動する >
<2.演奏するオブジェクトを決める >
<3.拡張機能[音楽] カテゴリーを読み込む >
と、それぞれまったく同内容です。
すでにご覧の方は、読み飛ばしていただけますよう、お願いいたします。)
米マサチューセッツ工科大学(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回連続で使います。
ブロックパレットから[〇の音符を〇拍鳴らす]ブロックをドラッグして、右上にねこのマークが小さく薄く映っているエリア(スクリプトエリアと言います)にドロップします。
ブロックパレットで、もう一度同じブロックをドラッグして、
先にドロップしたブロックの下に、くっつけるようにドロップします。
同じことをさらにもう一度繰り返して、3つめをくっつけます。
今作ったスクリプトを実行してみます。
1つのスクリプトを実行する場合は、そのスクリプトをクリックするだけで実行できます。
「トゥン トゥン トゥン 」とピアノのような音が3回鳴るのが聞こえたでしょうか。
もし、音が聞こえなかった場合は、コンピューターの音量ボタンを探して、音量を調整してみてください。
今、 楽器の種類 や、音程(ドレミ)、音が鳴る長さ(拍) などについては、特に何も考えずに3回音を鳴らしてみました。
5.テンポを変える
次にテンポを変えてみたいと思います。
Scratchでは、テンポの単位をBPM、Beat Per Minutes = 1分間当たりの拍数で指定します。
例えば、Scratchでテンポが60のときとは、1秒間に60拍、すなわち、1拍1秒のテンポという意味になります。
現在のテンポの値を確認するテンポを変えるにあたって、現在のテンポを確認したいと思います。
現在のテンポを値に持つブロックは、[音楽]カテゴリーの[テンポ]ブロックです。
Scratchでは、ブロックパレット内のブロックもクリックすることで実行できます。
[テンポ]ブロックのように、楕円の形をしたブロックは、値ブロックと呼ばれる種類のブロックで、値ブロックはクリックして単独で実行すると、現在のその値が表示されます。
では、ブロックパレット内の[テンポ]ブロックの上でクリックして表示される値を確認します。
[テンポ]ブロックの値は60になっていると思います。
1分に60拍、すなわち、1拍1秒のテンポで設定されていることがわかります。
テンポを120にするでは、テンポを120(1拍0.5秒の速さ)にしてみたいと思います。
テンポを変えるブロックは、[音楽]カテゴリーの中に2つあります。
1つは、[テンポを〇にする]ブロック、もう1つは、[テンポを〇ずつ変える]ブロックです。
2つとも、〇に入れるのは数字だけですが、その数字の隠れた単位はBPMです。
1つめの[テンポを〇にする]ブロックは、ストレートに変えたいBPMを〇に入力して使用します。
2つめの[テンポを〇ずつ変える]ブロックは、〇に正の数を入力して使った場合は現在のテンポのBPM値に〇の数値を足したBPMに変え、〇に負の数を入力して使った場合は現在のテンポのBPM値から〇の数値を引いたBPMに変えます。
今回は、1つめの[テンポを〇にする]ブロックを使って、テンポのBPM値を120にします。
音を出す前に変えておきたいので、先ほど3つつなげたブロックの先頭に、[テンポを〇にする]ブロックをドロップしてつなげます。
そして、今つなげた[テンポを〇にする]ブロックの〇の中に、120と入力します。
スクリプトをクリックして実行します。
先ほどよりも「トゥン トゥン トゥン 」の音の間隔が、短くなったように感じたでしょうか?
(ものすごく速くなった感じですね。)
6.「ぶんぶんぶん」の最初の3音を鳴らしてみる
普通の楽譜の中で1つの音符が表すのは、ドレミなどの音程と音の長さです。
[音楽]カテゴリーの[〇の音符を〇拍鳴らす]ブロックは、1つの音符が表す音程と音の長さを指定して、現在の楽器で1音鳴らすブロックです。
・音程は左の〇に最終的に数値で入れますが、実際には、この〇をクリックしたときに表示されるキーボードの図から、適当な音程のキーを1つクリックして、音程を入力します。
・音の長さは右の〇に拍数を数値で入れます。
「ぶんぶんぶん」最初の3音は、四分音符で「ソ」「ファ」「ミ」です。
今作ってあるプログラムの1音めのためのブロックを「ぶんぶんぶん」の1音めの音に変えたいと思います。
1音めのブロックの左の〇をクリックし、表示されたキーボードから、その音をクリックします。
キーボードのキーをあちこちクリックして音を確かめながら、音を探すことができます。
1音めの「ソ」の音は「67」という数字で表されます。
キーボードの図の表示がいらなくなったら、 スクリプトエリアの キーボード以外の部分をクリックすると、非表示になります。
同様の方法で、2音めのためのブロックの左の〇に「ファ」、3音めのためのブロックの左の〇に「ミ」を設定します。
ここで、一度スクリプトをクリックして実行してみます。
「ソ」「ファ」「ミ」と聞こえたでしょうか。
たぶん、聞こえたと思いますが、かなり、速い流れに聞こえたと思います。
では、次に、拍の調整をします。
拍とは、乱暴に説明すると、手をたたいてリズムをとるときに一回手をたたいてから次に手をたたくまでの長さで、例えば、四分の四拍子だと、四分音符1個分の長さが1拍です。
拍の理論は結構複雑で難しいので、この先は、音楽を学問的に語っているサイト https://www.senzoku-online.jp/mobile/theory/classic/04/measure_beat-03.html などでご確認ください。
今回とりあげる楽曲「ぶんぶんぶん」は四分の四拍子の曲なので、最初の1小節の1音ずつについて、四分音符で「ソ」「ファ」「ミ」、そして、四分休符、のそれぞれの拍は、1拍ずつです。
では、先ほど作ったプログラムを修正します。
今作っているプログラムでは、3音とも0.25拍で演奏しています。
これを、すべて1拍に修正します。
先ほど、テンポを120BPMにしたので、1分間に120拍の速さにしてあります。
ここで1音を1拍で演奏するということは、1音を0.5秒の長さ鳴らすことになります。
一度スクリプトをクリックして実行してみます。
皆さんのご存知の「ぶんぶんぶん」に近づいてきたでしょうか?
7.楽器の種類を変える(チェロに変える)
次に楽器の種類を変えてみたいと思います。
楽器の種類Scratch 3.0では、2020年6月現在、次の21種類の楽器の音が用意されています。
(1)ピアノ
(2)電子ピアノ
(3)オルガン
(4)ギター
(5)エレキギター
(6)ベース
(7)ピチカート
(8)チェロ
(9)トロンボーン
(10)クラリネット
(11)サクソフォン
(12)フルート
(13)木管フルート
(14)バスーン
(15)合唱団
(16)ビブラフォン
(17)ミュージックボックス
(18)スチールドラム
(19)マリンバ
(20)シンセリード
(21)シンセパッド
楽器の種類を変える今回は、ハチが飛ぶような音にしたいので、楽器はチェロにしたいと思います。
3つある[〇の音符を〇拍鳴らす]ブロックよりも前に、楽器を変えておく必要があるので、今回は、スクリプトの一番上に 楽器を変えるための[楽器を〇にする]ブロックを置き、現在[(1)ピアノ]となっている〇のところをクリックし、[(8)チェロ]をクリックして選択します。
スクリプトの上でクリックして実行し、音を聞いてみます。
チェロの音に変わったでしょうか。
8.休符を挟む(始めの2小節分の音を作る)
休符「ぶんぶんぶん」最初の3音は、四分音符で「ソ」「ファ」「ミ」で、その次は、四分休符です。
休符は、[音楽]カテゴリーの[〇拍休む]ブロックを使います。
今作っているプログラムでは、四分音符の音を1拍で鳴らしているので、四分休符の拍も1拍です。
そこで、 「ソ」「ファ」「ミ」 の次は、[〇拍休む]ブロックを付け、〇に半角で1を入力して、1拍休む演奏にします。
続く2小節目は、八分音符が4つ続き、それらの音程は順に「レ」 「ミ」 「ファ」 「レ」、そのあと四分音符で「ド」、最後に四分休符です。
今作っているプログラムの音楽は、四分の四拍子なので、1拍が四分音符1つ分ということで、八分音符は0.5拍ということになります。
では、2小節目の音を下図のように追加します。
それでは、一度、スクリプトをクリックして実行してみます。
イメージするような音楽になっているでしょうか?
9.チェロの演奏のプログラムを完成させる
それでは、このプログラムに最後の仕上げを施します。
今まで、プログラミングの途中で、作っているスクリプトの動作確認は、そのスクリプトをクリックして実行することで行ってきました。
今のプログラム内容は、エディターでスクリプトが見えている状態であれば、スクリプトをクリックして実行することができるので問題ないのですが、Scratchのプログラムの配布では、スクリプトを隠して、ステージだけの状態で配布することもあります。
ステージだけの状態で配布することも考えると、実行のしようがなくなるので、まだ完成とは言えない状態です。
ということで、ステージだけの配布のときにも動かせるように、仕掛けを作ります。
緑の旗のボタンScratchでは、プログラムをエディターで見えるように共有状態で配布するときも、ステージだけを(実行だけできる状態で)配布するときも、いつでも、必ず、緑の旗のボタンと赤い八角形のボタンを、どこかに付けておいてくれます。
緑の旗のボタンは、それをユーザーがクリックしたら、Scratchの基本機能の[イベント]カテゴリーにある[緑の旗が押されたとき]ブロックを先頭に付けたブロックがあれば、そのスクリプトから実行するというものです。
とは言え、Scratchのプログラムは、緑の旗のボタンだけがプログラムの実行を開始できるのではなく、何かのキーを押したり、画面上のスプライトをクリックしたり、ある音量以上の大きな音をを感知したときなど、さまざまなきっかけ、すなわち、イベントから、プログラムの実行を開始するようにプログラミングすることができます。
緑の旗のボタンが用意されているのは、次のような2つの理由からではないかと想像します。
理由の1つめは、プログラムの実行のいろいろなパターンがすべて同等に存在すると、子どもにはじめから全部を教える必要が生じて、大変だからです。
でき上がっているプログラム、例えば、Scratchコミュニティーサイトで公開(共有)されているプログラムは、誰でも自由に実行でき、スクリプトなどのすべてを表示でき、変更もできるので、学習教材にはもってこいですが、その実行1つをとっても、いろいろなパターンをあらかじめ全部教えるのは大変です。
でも、Scratchでプログラミングする人たちの暗黙の了解が、緑の旗をクリックして実行を開始するプログラムを作ることだということを知れば、緑の旗のボタンの操作を教えるだけで、公開されたプログラムの大半のものの実行に子どもたちが成功する可能性があります。
それとともに、プログラミングの先生は、その子どもたちがプログラミング初心者の間は、緑の旗のボタンをクリックして動くプログラムの作り方に注力して教えることができます。
理由の2つめは、緑の旗のボタンから始めるプログラムではなく、別のイベントから始めるプログラムで、いろいろなイベントをきっかけとしてあちこちのスクリプトが呼ばれ合うプログラムを作った場合、作者が説明欄に起動方法の説明を載せていないなど、作者から説明を受けないでプログラムの実行を開始しようとすると、例え、プログラムのすべてを読んでみても、どのスクリプトのイベントから動かしたら、作者が意図する”最初”を動かせるのかがわからないことがあるからです。
説明欄の説明文は、自分が知らない言語で書かれている場合でも、Scratchやブラウザの機能で翻訳できますが、子どもが翻訳の操作をするのは大変だと思いますし、子どもが例え翻訳した文章を入手できたとしても、表示された日本語を理解できない場合もあります(漢字が読めない、言葉が専門的など)もあります。
上記の理由から、とにかく、子どもも含めたたくさんの人に使ってもらいたいプログラムを作るなら、緑の旗をクリックしたら動くプログラムを作ります。
今作っているプログラムも、緑の旗がクリックされたら実行が始まるように作ります。
まず、ブロックパレットで[イベント]カテゴリーをクリックして、[イベント]カテゴリーのブロックを表示します。
一番上にある[緑の旗が押されたとき]ブロックをドラッグし、先に作ったスクリプトの一番上に付けてドロップします。
それでは、ステージ左上にある緑の旗のボタンをクリックして、実行してみます。
また、以下は、Scratchコミュニティーサイトで公開(共有)したこのプログラムのステージだけを、実行できる形で埋め込んだものです。
真ん中に表示される緑の旗か、2回目以降はステージ左上の緑の旗をクリックして実行してみてください。
ぶんぶんぶんのチェロの演奏2小節分が聞けたでしょうか。
共有したプログラムを表示してエディターで見たり触ったりしたい方はこちらのリンク、説明欄と実行のステージのページ(プロジェクトページと言います)を見たい方は、こちらのリンクからご覧ください。
ストップボタン赤い八角形のボタンは、ストップボタン、または、強制終了ボタンとも言います。
日本の止まれの標識は違いますが、他の国では止まれの標識は赤い八角形が多く、Scratchのストップボタンもこの形が採用されています。
ストップボタンは、無限ループにはまってしまったときや、プログラムの実行途中に、実行を強制的に終了したいときにクリックします。
10.まとめ
・[音楽]カテゴリーは、拡張機能にあるカテゴリー
→[音楽]カテゴリーにあるブロックを使うには、画面左下のボタンを押して、ブロックパレットに読み込むことから始めます。
・[音楽]カテゴリーの1拍の長さの単位は、BPM(Beat Per Minutes = 1分間当たりの拍数 )
・音程はキーボードの図からキーをクリックして指定
・音の長さは拍数で指定
コメント