2nd DAY ログ(3)
[4]サンプリング
[4-1] Sonic Piに元から入っているsampleをいじる方法
sample :~ ~という名前のサンプル音を使用する(ヘルプメニューからサンプルの詳細を見ることができる)
サンプル音は、音色を設定することができない!
ただし、その再生時間を変えることで、音の高さを調整することは可能!
[sample.1]
sample :sn_zome, rate: 3 #通常の再生時間と比べて3倍速で再生されるため、音が高くなったように聞こえる
[sample.2]
あらかじめSonic Piに入っているサンプルのなかには、ただの音ではなく、すでに曲になっているものもある。
曲の場合、その長さをきちんと把握しておかないと、他の音と合わせた時にズレが生じてしまう。
puts sample_duration(~) ~というサンプルの長さを、SonicPi画面右の「ログ」ウィンドウに表示する。
puts sample_duration(:loop_amen)
→ログウィンドウには、「{run: 141, time: 0.0} 1.753310657596372」と表示され、loop_amenの長さが「約1.753」ということが分かる。
[sample.3] 自動的に、sample_duration(~)に書かれたサンプル音の長を数値でを生成してくれる
sample :loop_amen
sleep sample_duration(:loop_amen)
sample :loop_amen
[sample.4] sampleのrateを変更した場合、sleepに入れられたsample_duration(:loop_amen)の長さも考慮する必要がある!
sample :loop_amen, rate: 2 #sample :loop_amenの再生速度を2倍速にする
sleep sample_duration(:loop_amen)/2 #sample :loop_amenのsleepの長さを1/2にする
sample :loop_amen, rate: 2 #sample :loop_amenの再生速度を2倍速にする
[sample.5] rate: に入れる数値をマイナスにすると、逆再生される
sample :loop_amen, rate: -1 #loop_amenが逆再生される
[sample.6] attack: ~ 始めは小さい音量からスタートし、~の時間内に元の音量まで上げていく
sample :loop_amen, attack: 1.3 #スタートから1.3拍のところまでに音量を上げきる
[sample.7] release:~ 始めは元の音量でスタートし、~の時間内に音を下げていく
sample :loop_amen, release: 0.75 #終わりから0.75拍のところから徐々に音量を下げる
[sample.8] sustain:~ 元の音量(ピークの音量)を~秒キープする
sample :loop_amen, sustain: 0, release: 0.75 #sustainを0に設定しているため、いきなりピークの音量から0.75拍かけて音量が小さくなる。
※attack、release、sustainの後に入る数値の長さは、曲全体のbpmに対する1拍分を基準にしている※
[sample.9] start:~ ~の位置からsampleを再生する
sample :loop_amen, start: 0.75 #loop_amenの曲の、0.75の位置(3/4の位置)からスタートする
[sample.10] finish:= ~の位置でsampleの再生が終わる
sample :loop_amen, finish: 0.75 #loop_amenの曲の、0.75の位置(3/4の位置)で終了する
[4-2] 自分のパソコンに入っている音源をsampleとして読み込んでいじる方法
- .wav形式のデータを用意する。 (このときに、SonicPiの素材用フォルダを作っておき、その中にファイルを入れると後々わかりやすい)
- 用意したファイルを、SonicPiのコーディング画面に直接ドラッグ&ドロップする。
- すると、下記の画面のように、緑色の文字列が表示される。
先ほどの緑色の文字列の前に、sampleと書き足して再生(Run)すると、先ほどドラッグ&ドロップしたwavデータが再生される!
このように表示されたwavデータは、[4-1]で学んだのと同様に曲の早さを変えたり、attack等の数値を設定することができる。ただ、上記のようにwavデータが文字列で表記されたままだと、コードが読みにくくなる可能性がある。
下記のように、wavデータに任意の名前をつける(変数を設定する)ことで、いちいち長い文字列を書かなくてよくなる。
my_voice = "~.wav"
loop do
sample my_voice #~.wavというデータが再生される
sleep 1
end