スクラッチでリズムボックスをつくろう

準備(じゅんび)

スクラッチを開いてサインインしたら、「作る」を押(お)します。 画面左下の「拡張機能(かくちょうきのう)」という「+」のマークのついた四角いボタンを押(お)します。 「拡張機能(かくちょうきのう)を選(えら)ぶ」という画面が出るので、 左上の「音楽」という楽器(がっき)が表示(ひょうじ)されている絵(え)を押(お)します。 「音楽ブロック」という音符(おんぷ)のマークのついたブロックが追加(ついか)されたら 準備完了(じゅんびかんりょう)です。

ドラム譜(ふ)の読み方

リズムを楽譜(がくふ)に書くやり方の1つに「ドラム譜(ふ)」というものがあります。 たとえば、ロックのリズムの基本(きほん)となる8ビート(エイトビートとよびます)は 以下のような「ドラム譜(ふ)」で表わされます。

8beat

  • 一番上の音符(おんぷ)の部分が☓になっているものは、「クローズハイハット」の音符(おんぷ)です。 サンバなどのラテンの音楽の場合、「クローズハイハット」の代わりに「カウベル」を使用する場合もあります。

  • その下のト音記号で1オクターブ上のドにあたる部分(下から3本目と4本目の線の間)にある音符(おんぷ)は 「スネアドラム」の音符(おんぷ)です。 サンバなどのラテンの音楽やジャズなの場合、「スネアドラム」の代わりに「サイドスティック」というスネアドラムのリム(たいこのふちの部分)を打つ音を使用する場合もあります。

  • 一番下のト音記号でファにあたる部分(下から1本目と2本目の線の間)にある音符(おんぷ)は「バスドラム」の音符(おんぷ)です。

音符(おんぷ)と拍(はく)の数字

音符(おんぷ♪)には、全音符(ぜんおんぷ)、2分音符(にぶおんぷ)、4分音符(しぶおんぷ)、 8分音符(はちぶおんぷ)などがあり、それぞれの打楽器(だがっき)を打つ拍(はく)の長さを表しています。 全音符(ぜんおんぷ)は小節(しょうせつ)の全ての長さになり、拍(はく)の数字は「1」になります。 それぞれの音符(おんぷ)の拍(はく)の数字は以下のとおりです。

  • 全音符(ぜんおんぷ)⇒「1」
  • 2分音符(にぶおんぷ)⇒「0.5」
  • 4分音符(しぶおんぷ)⇒「0.25」
  • 8分音符(はちぶおんぷ)⇒「0.125」
  • 16分音符(じゅうろくぶおんぷ)⇒「0.0625」

変(か)わった音符(おんぷ)として3連符(さんれんぷ)というものがあります。 音符(おんぷ)の上か下に —–3—– が書かれた音符(おんぷ)で、音符(おんぷ)の拍(はく)の長さを3分の1にするものです。

  • 8分音符(しぶおんぷ)の3連符(さんれんぷ)=4分音符を3分の1した拍(はく)⇒「0.0833(4)」
  • 16分音符(しぶおんぷ)の3連符(さんれんぷ)=8分音符を3分の1した拍(はく)⇒「0.0417(6)」

なお、3連符(さんれんぷ)の場合、元の音符(おんぷ)の数字が3ではわりきれないため、そのままの数字を使うと3つあわせて0.0001拍(はく)分ずれてしまい、少しずつリズムがずれてしまうので、3連符の3つのうちいずれか1つの数字を()内の数字にして、3つ足した数字が3でわる前の音符(おんぷ)の数字(「0.25」や「0.125」)になるようにしてください。

休符(きゅうふ)にも音符(おんぷ)と同じように、いろいろな拍(はく)の長さがあるので、 音符(おんぷ)の長さと同じように休符(きゅうふ)の長さに応(おう)じて、泊(はく)の長さを指定します。

8ビート(エイトビート)のリズムボックスを作る。

それでは、先ほどの8ビート(エイトビート)のドラム譜(ふ)を使って、リズムボックスを作ってみましょう。

スプライトは「ねこ」のままでもよいのですが、リズムに合わせてスプライトをダンスさせたいので、 「ねこ」を削除(さくじょ)して、代わりに「スプライトを選(えら)ぶ」⇒「人」⇒「Champ99」を選(えら)びます。

「開始・中止」の変数(へんすう)を作る

次に、「コード」タブを選(えら)び、「変数(へんすう)」⇒「変数(へんすう)を作る」を選(えら)んで、 「開始・中止」という名前を付け、「このスプライトのみ」をチェックし、さらに見えなくするように 変数(へんすう)の左のチェックを外します。

この変数(へんすう)はリズムを開始したり、中止させたりするためのものです。 1つのリズムだけだったら「緑の旗(はた)の実行」とそのとなりの「止める」でリズムを開始したり、中止したり できますが、2つ以上(いじょう)のリズムを作って、それぞれのリズムごとに開始したり、中止したり したいので、この変数(へんすう)を用意します。「このスプライトのみ」にするのもスプライトごとに開始、中止を行うためです。

「開始・中止」の変数(へんすう)の数字を設定(せってい)する

まず、緑の旗(はた)が押(お)されてプログラムが実行されても、いきなりリズムが始まらないようにします。

「イベント」⇒「緑の旗(はた)が押(お)されたとき」を選(えら)び、 「変数(へんすう)」⇒「「開始・中止」を○にする」を「緑の旗(はた)が押(お)されたとき」の後にくっつけ、 ○の数字に「0」(ゼロ=中止)を指定します。

次に、スプライトをクリックしたら、リズムが始まったり、止まったりするようにします。

「イベント」⇒「このスプライトを押(お)されたら」を選(えら)び、 「制御(せいぎょ)」⇒「もし〇〇なら、でなければ」を「このスプライトを押(お)されたら」の後にくっつけます。 「もし〇〇なら」の〇〇の部分に、「演算(えんざん)」⇒「○=○」を入れます。 「○=○」の左の○に「変数(へんすう)」⇒「開始・中止」を入れ、右の○に「0」(ゼロ=中止)を入れます。

「もし」のすぐ後に、「「変数(へんすう)」⇒「「開始・中止」を○にする」をくっつけ、「○にする」を「1」(=開始)にします。

「でなければ」のすぐ後に、「「変数(へんすう)」⇒「「開始・中止」を○にする」をくっつけ、「○にする」を「0」(ゼロ=中止)にします。

これで、スプライトをクリックすることで「開始・中止」変数(へんすう)が0(ゼロ=中止)になったり1(=開始)になったりして、リズムを始めたり、止めたりできるようになります。

「リズム1」のイベントを作り、このイベントでいろいろな楽器(がっき)の演奏(えんそう)が始まるようにする

さきほどの、「もし」で「「開始・中止」を1にする」のあとに、リズムを実行するようにすれば、スプライトを クリックすることでリズムを開始することはできますが、それでは1つの楽器(がっき)、たとえば「クローズハイハット」しか実行できません。

2つ以上(いじょう)の楽器(がっき)が実行できるようにするため、「リズム1」という「イベント」を作ります。

「イベント」⇒「○を送る」を選(えら)び「○」の右の▼をクリックして「新しいメッセージ」を選(えら)び、 「リズム1」という名前を入力して「OK」をクリックし、「リズム1」という「イベント」を作ります。

作った「「リズム1」を送る」をさきほどの「もし」の後の「「開始・中止」を1にする」の後にくっつけます。

「クローズハイハット」を実行する

まず1番目の打楽器(だがっき)「クローズハイハット」を実行するようにします。

「イベント」⇒「○を受け取ったとき」を選(えら)び「○」の部分を「リズム1」にします。 「制御(せいぎょ)」⇒「〇〇まで繰(く)り返す」を選(えら)び、「○を受け取ったとき」の後にくっつけます。 「〇〇まで」の部分に、「演算(えんざん)」⇒「○=○」を入れ、左の○の部分に 「変数(へんすう)」⇒「開始・中止」を入れ、右の○部分に、「0」(ゼロ=中止)を入れます。

これで、「リズム1」というイベントを受け取ったら、「開始・中止」が「0」(ゼロ=中止)になるまでリズムを実行しつづけます。

「「開始・中止」=「0」まで繰(く)り返す」の内側(うちがわ)の部分にリズムの音符(おんぷ)または休符(きゅうふ)を入れてリズムを作ります。

ここで、もう一度8ビート(エイトビート)のドラム譜(ふ)を見てみましょう。

8beat

ドラム譜(ふ)の一番上の「☓」が付いた音符(おんぷ)が「クローズハイハット」です。 1小節(しょうせつ)内で8分音符(はちぶおんぷ)を8回つづけて鳴らして、休符(きゅうふ)はありません。

そこで、「音楽」⇒「○のドラムを○拍(はく)鳴らす」を選(えら)び、「○のドラム」の部分を 「(6)クローズハイハット」にし、「○拍(はく)」の部分を8分音符(はちぶおんぷ)の拍(はく)の長さ 「0.125」にして、「「開始・中止」が「0」まで繰(く)り返す」の内側(うちがわ)にくっつけます。

8回つづけるので、コピペを使って「「クローズハイハット」のドラムを「0.125」拍(はく)鳴らす」を 8個コピペしてつなげます。

これで、「クローズハイハット」ができました。スプライトをクリックすると「クローズハイハット」が鳴りつづけ、 もう一度スプライトをクリックすると音が止まることを確(たし)かめてください。 ただし、「クローズハイハット」が8回鳴り終わるタイミングでしか止まらないので、止まるまでにちょっと時間が かかることがあります。

コスチュームを使って、スプライトをダンスさせる

リズムに合わせてスプライトをダンスさせましょう。

スプライトをダンスさせるためには、コスチュームを使います。

まず、「見た目」⇒「コスチュームを○にする」を選(えら)び「○にする」を「「champ99-a」にする」にして 「「リズム1」を受け取ったとき」の直後にくっつけて、スプライトのはじめのポーズを1番目のコスチュームにします。

次に、「見た目」⇒「次のコスチュームにする」を選(えら)び、「「クローズハイハット」のドラムを「0.125」拍(はく)鳴らす」を4回つづけた後にくっつけます。

「見た目」⇒「次のコスチュームにする」をもう一度選(えら)び1番後ろの「「クローズハイハット」のドラムを「0.125」拍(はく)鳴らす」の後にくっつけます。

これで、0.125拍(はく)✕4=0.5拍(はく)ごとにコスチュームが切りかわります。

スプライトをクリックし、1小節(しょうせつ)に2回ずつコスチュームが切りかわって、ダンスして見えるのを 確(たし)かめてください。

もっとゆっくりダンスさたければ、「次のコスチュームにする」を一番後の1回だけにします。 もっと早くダンスさせたければ、「次のコスチュームにする」を「「クローズハイハット」のドラムを「0.125」拍(はく)鳴らす」の2回に1回、合計4回行うようにします。

「スネアドラム」の音を追加(ついか)する

次に、2番目の打楽器(だがっき)「スネアドラム」を実行するように、まず下記のように「クローズハイハット」の先頭部分と同じことを行います。

「イベント」⇒「○を受け取ったとき」を選(えら)び「○」の部分を「リズム1」にします。 「制御(せいぎょ)」⇒「〇〇まで繰(く)り返す」を選(えら)び、「○を受け取ったとき」の後にくっつけます。 「〇〇まで」の部分に、「演算(えんざん)」⇒「○=○」を入れ、左の○の部分に 「変数(へんすう)」⇒「開始・中止」を入れ、右の○部分に、「0」(ゼロ=中止)を入れます。

ここで、もう一度8ビート(エイトビート)のドラム譜(ふ)を見てみましょう。

8beat

ドラム譜(ふ)の真ん中の音符(おんぷ)が「スネアドラム」です。 1小節(しょうせつ)内で8分音符(はちぶおんぷ)2回分休んだ後、8分音符(はちぶおんぷ)1回打って、8分音符(はちぶおんぷ)1回休む。これを2回くりかえします。

  1. 「音楽」⇒「○拍(はく)休む」を選(えら)び、「○拍」の部分を「0.25」にして、 「「開始・中止」が「0」になるまで繰(く)り返す」の後にくっつけます。 これで、4分音符(しぶおんぷ)1回分=8分音符(はちぶおんぷ)2回分休みます。

  2. 「音楽」⇒「○のドラムを○拍(はく)鳴らす」を選(えら)び、「○のドラム」の部分を 「(1)スネアドラム」にし、「○拍(はく)」の部分を8分音符(はちぶおんぷ)の拍(はく)の長さ 「0.125」にして、上記1の後のくっつけます。

  3. 「音楽」⇒「○拍(はく)休む」を選(えら)び、「○拍」の部分を「0.125」にして、 上記2の後のくっつけます。

ここまで、できたら上記の3つのブロックまとめてコピーして3つのブロックの後にくっつけて2回分にします。

スプライトをクリックすると、「クローズハイハット」の音に加えて、「スネアドラム」の音が1小節(しょうせつ)に 2回鳴るようになります。

「バスドラム」の音を追加(ついか)する

最後(さいご)に、打楽器(だがっき)「バスドラム」を実行するように、これまでと同じようなことを行います。

「イベント」⇒「○を受け取ったとき」を選(えら)び「○」の部分を「リズム1」にします。 「制御(せいぎょ)」⇒「〇〇まで繰(く)り返す」を選(えら)び、「○を受け取ったとき」の後にくっつけます。 「〇〇まで」の部分に、「演算(えんざん)」⇒「○=○」を入れ、左の○の部分に 「変数(へんすう)」⇒「開始・中止」を入れ、右の○部分に、「0」(ゼロ=中止)を入れます。

ここで、もう一度8ビート(エイトビート)のドラム譜(ふ)を見てみましょう。

8beat

ドラム譜(ふ)の一番下の音符(おんぷ)が「バスドラム」です。 1小節(しょうせつ)内で4分音符(しぶおんぷ)を1回打ち、4分休符(しぶきゅうふ)1回分休み、 8分音符(はちぶおんぷ)を2回打ち、4分休符(しぶきゅうふ)1回分休みます。

  1. 「音楽」⇒「○のドラムを○拍(はく)鳴らす」を選(えら)び、「○のドラム」の部分を 「(2)バスドラム」にし、「○拍(はく)」の部分を4分音符(しおんぷ)の拍(はく)の長さ 「0.25」にして、「「開始・中止」が「0」になるまで繰(く)り返す」の後にくっつけます。

  2. 「音楽」⇒「○拍(はく)休む」を選(えら)び、「○拍」の部分を「0.25」にして、 上記1の後のくっつけます。

  3. 「音楽」⇒「○のドラムを○拍(はく)鳴らす」を選(えら)び、「○のドラム」の部分を 「(2)バスドラム」にし、「○拍(はく)」の部分を8分音符(はちぶおんぷ)の拍(はく)の長さ 「0.125」にして、上記2の後にくっつけます。

  4. 上記3をコピー(または同じものを作る)して上記3の後にくっつけます。

  5. 「音楽」⇒「○拍(はく)休む」を選(えら)び、「○拍」の部分を「0.25」にして、 上記4の後のくっつけます。

8ビート(エイトビート)リズムの完成(かんせい)

これで、「緑の旗(はた)」をクリックして、プログラムを実行し、スプライトをクリックすると 8ビート(エイトビート)のリズムが鳴り、そのリズムにあわせてスプライトがダンスします。 そして、もう一度スプライトをクリックすると、音とダンスが止まります。

これで、8ビート(エイトビート)が完成(かんせい)しました。

他のリズムを追加する

他のリズムを追加するやり方には2つのやりかたがあります。

  1. 作ったスプライトをコピーして、コスチュームを別のスプライトのものに取りかえる
  2. 新しいスプライトを作り、前に作ったスプライトのコードを全て新しいスプライトにコピーする

1番目のやり方はコードをコピーしなくてもよいのですが、新しく追加(ついか)するスプライトのコスチュームの数が多いと、何回もコスチュームをコピーするという手間がかかります。

2番目のやり方はコスチュームは新しいスプライトのものがそのまま使えますが、コード内の全てのブロックを 新しいスプライトにコピーするという手間がかかります。

いずれのやり方で行ってもかまいませんので、あなたが楽だと思うやり方を選(えら)んでください。

コードで変(か)えなければいけない部分

上記のいずれかのやり方で、新しいスプライトができたら、以下の部分を変(か)える必要(ひつよう)があります。

  • 「リズム1」のイベントを新しいスプライト(リズム)ごとに、「リズム2」などの新しいイベントを作ってそのイベントに入れかえます。 (イベントを送る部分1か所と、イベントを受け取る部分3か所、合計4か所入れかえます)
  • 「コスチュームを○にする」の○の部分を新しいスプライトのコスチュームにします。
  • 「クローズハイハット」、「 スネアドラム」、「バスドラム」の3つの打楽器(だがっき)のリズム部分(「開始・中止=0まで繰(く)り返す」の内側(うちがわ)部分)を新しいリズムに合わせて書きかえます。 ただし、「クローズハイハット」には拍(はく)の数字の合計が0.5拍(はく)になるたびに1回ずつ「次のコスチュームにする」を入れます。

他のリズムのドラム譜(ふ)

他のリズムとしていろいろなリズムパターンのドラム譜(ふ)を用意したので、すきなリズムパターンを作ってみてください。

  • 16ビート(シクッスティーンビート) 16beat

  • ボサノバ(2小節(しょうせつ)で1パターンなので、2小節(しょうせつ)分(2倍)作る) bossanova

  • ロカバラード rockaballad

  • サンバ samba

  • シャッフル shuffle

  • ソンゴ songo

  • スウィング swing

テンポを変(か)える

サンバなどはこのままのテンポではちょっと速すぎますし、他のリズムでもテンポを早くしたり、遅(おそ)くしたり したい場合があると思います。

その場合は、「このスプライトが押(お)されたとき」ブロックの「もし「開始・中止=0」なら」の 直後で「開始・中止を「1」にする」の手前に「音楽」⇒「テンポを○にする」を入れて○の数字を変(か)えます。

何もしないと「60」なので今より速くしたければ60より大きい数を、遅(おそ)くしたければ60より小さい数をいれます。

1つのリズムに「テンポを○にする」を入れたら、他のリズムにもそのテンポが使われてしまうので、全てのリズムに「テンポを○にする」を入れます。そのとき、○の部分はとりあえず「60」のままにしておきます。

2つ以上(いじょう)のリズムが実行されないようにする

このままでは、あるリズムが実行されているときに、他のリズムのスプライトをクリックすると、前のリズムは終わらずに次のリズムが加わってしまい、おかしなことになってしまいます。

そこで、リズムがなっているスプライトをもう一度クリックしてリズムを止めるだけでなく、他のスプライトをクリックしても今鳴っているリズムが止まるようにします。

  • どれかのスプライトのコードで、「イベント」⇒「○を受け取ったとき」を選(えら)び、○のイベント名に新たに「ストップ」というイベントを追加します。
  • 「ストップを受け取ったとき」の後に、「変数(へんすう)」⇒「開始・終了を「0」にする」を追加(ついか)する
  • このスプライトが押(お)されたとき」ブロックの「もし「開始・中止=0」なら」の 直後で、さきほど入れた「テンポを○にする」の前(入れてなければ、「開始・中止を「1」にする」の前)に 「イベント」⇒「○を送って待つ」を入れ、○を「ストップ」にする

上記の修正(しゅうせい)を全てのスプライトに対して行います。 これで、いずれかのスプライトを開始しようとクリックすると、全てのスプライトに「ストップ」イベントが送られ、開始・中止」変数(へんすう)が「0」(ゼロ=中止)になって、リズムの実行が中止されます。

なお、開始しようとしていたスプライト自身については、「ストップ」イベントが送られて自分もふくめた全てのスプライトの開始・中止」変数(へんすう)が「0」(ゼロ=中止)になった後、自分自身のスプライトの開始・中止」変数(へんすう)だけ「1」(=開始)にするので、自分自身のリズムだけが実行されることになります。

完成(かんせい)

完成(かんせい)したリズムボックスの一例(いちれい)です。

https://scratch.mit.edu/projects/1132265714