[Scratch]一つのスプライトでOn/Offを切り替えるサンプル

こんにちは!なるーらぼです!

ほぼ毎日のようにScratchオンラインにアクセスするようになってしまったのですが、制約がある中というのは面白いですね。

このままあまり「何でもできる」ようにはならないでほしいですね。

前職の上司も言ってましたが、「なんでもできる、は何もできない」です。


スタート/ストップを1つのスプライトでつくる

今回はドラムマシンを完成させる前段階の検証として、音楽再生のスタートとストップを1つのスプライトでできるようなものをつくってみました。

「再生」というグローバルな変数に0なら停止、1なら再生という意味を持たせてスプライトがクリックされたときに値を反転します。あとは音を鳴らしている背景やアニメーションしている各スプライトがその値で実行を制御するようにしています。

なぜ再生と停止をそれぞれのスプライトにしていないかというと、モデルにしているRoland TR-909は再生と停止が同じスイッチなんです。

だからそうしているわけですが、すべてのドラムマシン(リズムマシン含めて)がそうというわけではなくて、わたしが所有しているYAMAHA RX7は別々になっています。

青色が再生で赤色(ピンクっぽいですけど)が停止だったはず。

なお、今回のサンプルはなんとなく含まれているプリセットの音も確認したかったのでバスドラムやスネア、ハイハットも使いましたし、和音も使いました。

この和音の音にインスパイアされて90年代風の味付け?にしてみました。

なんとも言えない雰囲気に仕上がっていると思います。

サンプルのポイントは変数「再生」の値の反転です。本当にちょっとしたことですけど、便利なので使ってみてください(誰向けなんだろう)。

文字を書く方のプログラミング言語的に記述すると、こういうやつです。

run = (run -1) * -1

これ、runが0のときは-1×-1になって結果的に1になります。

逆に1のときは1-1*-1となるので、どちらにしろ0になります。


2016.04.18 追記

コメントいただきましたので修正しました。

そのまま計算するとこうなるので、わかりやすい方に修正しています。

再生中のときは1-1になるので停止(0)に、停止のときはゼロなので再生(1)になります。


Scratchも徐々に慣れてきたので、当初は「あーっ、タイプすれば早いのに」と思っていましたがマウスでのドラッグ&ドロップも便利ですよ!

箱庭効果もあるような気がしますし、他の誰にも迷惑をかけるようなコードにできないので安心して楽しめますね。

ちょっと拡張のほうのScratchXも気になってはいますが、あちらは危険なこともできそうなので当面はこのまま本家で楽しみたいと思います。

もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

ごく自然にプログラミングを楽しむことができる世界をつくるお手伝いをしています

0コメント

  • 1000 / 1000