[音楽をプログラミングしよう] #03 - ループミュージックをつくってみよう

前回はSonic Piのインストールとはじめてのコードを書きました。

ところで、テクノ、エレクトロあるいはヒップホップのような繰り返しを多用する音楽はお好きでしょうか?今回はループを使った音楽、と言っても非常に簡単なものを書いてみましょう。それほど難しく考える必要はありません。普段ループ中心のDAW(デジタルオーディオワークステーション)、たとえばFL Studioのような、をご利用であれば、大きな違いはありません。


繰り返し

コンピュータソフトウェアの最も得意とする分野として、繰り返しがあります。同じ命令を繰り返すのは、人間ではなく機械がするのが一番です。かなり正確ですし、なにしろ疲れを知りません。


わたしもドラムマシンを自分で叩いてリズムをつくるのは非常にしんどいです。いつまでもは続かないので、せいぜい1小節から2小節が限度です。ということで、Sonic Piを使って繰り返してもらうことにします。


まずは前回のおさらいで音を鳴らす命令を書きましょう。

play :C4

実行すると、「ぽーん」と音がなりましたね。続けて「E3」と「G3」も書いてみてください。

play :C4
play :E4
play :G4

今度は和音が鳴りませんでしたか?Sonic Piは順に書いていてもほぼ同時に実行するので、和音に聞こえます。ではド、ミ、ソと鳴るように変更してみます。

play :C4
sleep 1
play :E4
sleep 1

play :G4

sleep 1

今度はゆっくりと「ド」「ミ」「ソ」となりましたね。ここで追加した「sleep」という命令は、休符のようなものです。しかし休符と思うとおかしいですよね。

実はSonic Piでは発音のタイミングをこのsleepでとるようになっているのです。ですから、先ほどのコードはsleepが入ったことで順に同じ間隔で発音されるようになったのです。なお、sleep命令につけている数値は拍数です。ですから、さきほどの命令では各音の再生を1拍ずつにしたということです。


せっかくなのでシンセサイザーについているアルペジエータのように連続して、しかも繰り返し発音してもらうようにしましょう。ここでやっと繰り返しの登場です。

今回は1小節分で1セットのアルペジオ(和音を分解して1音ずつ演奏する奏法)をつくってみましょう。先ほどはコードでいうとCメジャーです。4音になるようにB4を加えてCM7(メジャーセブンス)にします。8ビートにしたいので、拍数は1拍の半分の0.5にします。すると次のようになりますよね。

play :C4
sleep 0.5
play :E4
sleep 0.5

play :G4

sleep 0.5

play :B4

sleep 0.5

テンポもいまのものだとゆっくりすぎるので、BPM(1分間の拍数)を120くらいにしてみます。BPMを指定するには「use_bpm」命令を使います。コードは次のようになります。

use_bpm 120
play :C4
sleep 0.5
play :E4

sleep 0.5

play :G4

sleep 0.5

play :B4

sleep 0.5

テンポは速くなりましたか?では繰り返しをさせます。いまの「use_bpm」より下の行に「loop do」と追加します。そして、最後のsleepの下に「end」と入れます。コードは以下のようになります。

use_bpm 120
loop do
play :C4
sleep 0.5

play :E4

sleep 0.5

play :G4

sleep 0.5

play :B4

sleep 0.5

end

これを実行すると、ずっとアルペジオが繰り返されているのがわかるかと思います。


少し音楽的にする

このままでもアルペジオとしてはいいのですが、ちょっと単調ですよね。音色を変えてみましょうか。シンセサイザーの音を変えるには「use_synth」命令を使います。

今回使う音色は「:prophet」にしてみます。


ん?Prophetって…そう、ご存知の方はお察しのとおりです。

先ほどの「loop do」の下へ追加します。

use_bpm 120
loop do
    use_synth :prophet

    play :C4

    sleep 0.5

    play :E4

    sleep 0.5

    play :G4

    sleep 0.5

    play :B4

    sleep 0.5

end

音色がかなり変わって、シンセサイザーっぽくなりました。これでもまだ単調な気がします。ではエフェクターも使ってみましょう。エフェクターは「with_fx do」という命令を使います。今度は「loop do」の上の行に追加します。そして、最後の「end」の後の行にもうひとつ「end」を入れます。

use_bpm 120
with_fx :echo do
    loop do

        use_synth :prophet

        play :C4

        sleep 0.5

        play :E4

        sleep 0.5

        play :G4

        sleep 0.5

        play :B4

        sleep 0.5

    end

end

今回はエコーを使いました。「:echo」というのがそれに当たります。もっとテクノっぽくなってきましたね。


DJ気分に浸る

今度はシンセではなくてDJ気分でサンプラーを使ってみたいと思います。Sonic PiはWindowsの「wav」形式ファイルをはじめ、音声ファイルの再生をサポートしています。今回はプリセットの音源を使ってみたいと思います。


さきほどの「loop do」から「end」までを削除して、次のようにしてみてください。

use_bpm 120
with_fx :echo do
    loop do

        sample :loop_breakbeat

        sleep 2

    end

end

これを実行するとサンプルループのテンポとまったくあっていないので、BPMを63くらいに調整しましょう。また、エコーがかかりすぎているのでそれもミックス量を減らしましょう。

use_bpm 63
with_fx :echo, amp: 0.8, mix: 0.2 do
    loop do

        sample :loop_breakbeat

        sleep 2

    end

end

こんな風になります。これで実行してみると良い雰囲気になったのではないかと。


最後に

今回はループミュージックをつくることを中心にお話ししてきました。シンセを使った方法とサンプルループを使った方法です。エフェクターも使うことができるので、さらに複雑な音楽をつくることもできます。なお、サンプルの場合はワンショットのサンプルを並べて音楽をつくることもできます。


次回はもう少し細かいループと、ループ同士のシンク(同期)についてお話ししたいと思います。

もんが(なるーらぼ)

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

なるーらぼ

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

0コメント

  • 1000 / 1000