入門Scratch

06.BEEP音コントロール③(効果音)

【スクラッチ×ロボット】乱数で効果音を作ろう!BEEP音コントロール上級編

ゲームやアニメーションにおいて、「効果音(SE)」は作品のクオリティを左右する重要な要素です。爆発音、コンピューターの処理音、不思議な空間の環境音など、適切な音が加わることで臨場感は一気に高まります。

本記事では、プログラミングロボット「クムクム」とスクラッチ(Scratch)を使って、乱数(ランダムな数値)を活用したオリジナル効果音の作り方を解説します。決まったメロディを演奏するだけでなく、予測不能な音を作り出すことで、ロボットプログラミングの表現の幅を広げましょう。

1. 今回の学習のポイント:乱数と変数の活用

このチュートリアルでは、単に音を鳴らすだけでなく、以下のプログラミング的重要概念を実践的に学びます。

「乱数」による予測不可能性

「乱数」とは、サイコロを振った時のように何が出るか分からない数値のことです。これを利用することで、「毎回違う音」や「ノイズのような音」を作り出すことができます。

「変数」による値の可視化

コンピューター内部で生成された乱数が、実際にはどんな数値になっているのかを確認するために「変数」を使用します。これはデバッグ(プログラムの修正・確認)において非常に重要なスキルです。

処理速度とハードウェア制御の関係

LEDを光らせる処理を追加した際に発生する「音の変化(テンポの遅れ)」を通じて、プログラムの実行速度と通信の仕組みについて体感的に理解します。

2. 実践手順:ランダムな音を作り出す

それでは、実際にスクラッチを使って、ロボットから不思議な効果音を鳴らすプログラムを作成していきましょう。

ステップ1:乱数で周波数を決める

通常、BEEP音のブロックには「440Hz(ラ)」のように決まった数字を入れますが、今回は「演算」カテゴリにある「1から10までの乱数」ブロックを使用します。

設定例:

周波数の範囲を広く設定することで、面白い音の変化が生まれます。動画では以下のように設定しています。

・最小値:200 Hz(低い音)

・最大値:2000 Hz(高い音)

この乱数ブロックを、BEEP音ブロックの「周波数」の部分にはめ込みます。これで、ブロックをクリックするたびに、コンピューターが勝手に決めた高さの音が鳴るようになります。

ステップ2:「ずっと」ブロックで連続再生

一回鳴らすだけでは効果音らしくはなりません。「制御」カテゴリの「ずっと」ブロックを使って、音を鳴らす処理を囲みます。

これにより、「ピ・ポ・パ・ピ・プ・ポ…」と連続してランダムな音が鳴り続け、まるで昔のコンピューターが計算しているようなSE(サウンドエフェクト)が完成します。

ステップ3:音の長さを調整して質感を変化させる

音の長さ(秒数)を変えることで、聞こえ方の印象がガラリと変わります。

  • 0.1秒~0.2秒: リズム感のある信号音のように聞こえます。
  • 0.01秒以下: 非常に短い音を連続させると、「ザー」というノイズ音や、激しいデータ通信音のような質感になります。

動画内でも、音の長さを短くすることで、より緊迫感のある効果音へと変化させていく様子が確認できます。

3. 応用テクニック:変数の可視化とLED連携

さらにプログラムを発展させ、内部の動きを確認したり、光の演出を加えたりしてみましょう。

「変数」を使って現在の周波数を確認する

乱数を使っていると、「今、何ヘルツの音が鳴ったのか?」が耳だけでは分かりません。そこで「変数」を使います。

  1. 「変数」カテゴリで新しい変数(例:my_variable)を作る。
  2. 「変数を〇〇にする」ブロックを使い、〇〇の部分に先ほどの「乱数ブロック」を入れる。
  3. 音を鳴らすブロックの周波数部分に、乱数ブロックの代わりに「変数」ブロックを入れる。

こうすることで、計算された乱数が一度変数に格納され、画面左上のステージモニターで数値の変化を目で追いながら音を聞くことができるようになります。「今、1500Hzくらいの高い音が鳴った!」と視覚と聴覚で確認できるため、学習効果が高まります。

LEDを光らせると音が遅くなる?(重要)

音に合わせてLEDもピカピカ光らせたいと思い、「LED ON」→「音を鳴らす」→「LED OFF」という処理を追加してみます。すると、音のテンポが明らかに遅くなる現象が発生します。

なぜ遅くなるのか?

これは、PCからロボットへの通信量が増えるためです。「音を鳴らせ」という命令だけでなく、「LEDをつけろ」「LEDを消せ」という命令もBluetoothやWi-Fi経由で送信する必要があるため、その通信にかかる時間分だけ全体の処理が遅延します。

学ぶべき教訓:

ロボットプログラミングでは、命令を増やせば増やすほど、実行スピードに影響が出ます。高速な処理が必要な効果音などの場合は、余計な処理(LED制御など)を削るか、遅延を見越したプログラミングが必要になることを覚えておきましょう。

4. まとめとさらなる応用

今回は乱数を使ったBEEP音の制御について学びました。この技術は以下のような場面で応用できます。

  • ゲームのダメージ音: 乱数の幅を低音域(100Hz~300Hz)に絞り、長さを短くする。
  • 宇宙人の会話: 中音域で長さをランダムにする。
  • 警報音: 特定の2つの周波数だけが出るようにする(乱数ではなく条件分岐を使用)。

「乱数」は、プログラムに人間味や意外性を与えるスパイスです。ぜひ様々な数値や秒数を試して、あなただけのオリジナル効果音ライブラリを作ってみてください。

コメント

タイトルとURLをコピーしました