[SonicPi] サンプリングサウンドでミュージック!

サンプリングファイルを鳴らす

 音のフレーズとして、SonicPiにあらかじめ入っているサンプリング(録音)されたデータを使います。まずは、以下のプログラムを入力してください。

use_bpm 120

live_loop :breakbeat do
  sample :loop_breakbeat
  sleep 4
end

 「loop_breakfast」という名前のサンプリングファイルを再生します。ひとまず、ループして再生しますが、このままではループのはじめにカクっとリズムがズレてしまいます。


サンプリングファイルのズレをなくす

use_bpm 120

live_loop :breakbeat do
  sample :loop_breakbeat , beat_stretch: 4
  sleep 4
end

 そこで「beat_stretch」を使って、ズレないようにします。「sleep 4」で4拍でループしていますので、「beat_stretch: 4」にします。するとサンプリングファイルが4拍子の長さに調整されます。


音にグルーブ感を出す

ひとつの例「スライサー」エフェクト

use_bpm 120

live_loop :breakbeat do
  with_fx :slicer, phase: 0.25, wave:0 , mix: 1.0 do
    sample :loop_breakbeat, beat_stretch: 4
    sleep 4
  end
end

 「スライサー」とは、いま鳴らしている音に、強弱をつけるエフェクトです。「phase」「wave」「mix」の3つのパラメータがあります。「スライサー」の仕組みは、「wave」で指定した波の形で、音全体がゆらゆら揺れます。素早く音量が変化している状態です。このとき1拍子のなかで何回揺れるかを決めるのが「phase」です。下の図では1拍子のなかで4回揺れるようにしているので、「phase: 0.25」となります。「mix」は1.0を100%として、エフェクトした音ともとの音をどのくらい混ぜるか決めます。「mix: 1.0」はエフェクトした音だけ鳴らします。

 「wave」で指定できる波の形は、「0」「1」「2」の3種類あります。「phase」で指定できる数値を1.0より大きすると、1拍子よりもっと長い時間で揺らすことができます。


自分でサンプリングした音をつかう

 今度は自分でサンプリング(録音)した、外部のサウンドデータを使います。今回はサンプルとしてデータを用意してあります。サンプルは、口笛をふいた音、空き缶をたたいた音をいくつか録音して、波形編集ソフトで音を切り出したものです。波形編集ソフトはフリーの「Audacity」を使用しています。スマートフォンのアプリで録音して、PCに持ってきてもよいでしょう。「wav」形式のサウンドファイルにします。

 SonicPiでは、外部のサウンドデータが、PCの中のどこにあるのか場所をプログラムする必要があります。場所は「パス」と言いますが、このファイルのパスは手で入力するのではなくて、SonicPiのウィンドウへ外部サウンドデータをドラッグ&ドロップすると簡単です。

 どの場所でもよいのですが、今回はみんなで同じ作業になるよう、サンプルの外部サウンドデータを、フォルダごとデスクトップに置くことにします。「filename = 」のあとに続くパスを書き換えます。

live_loop :can do
  filename = "C:/Users/xxxx/Desktop/sample/can_0.wav"
  
  sample filename, beat_stretch: 1
  sleep 1
end

デスクトップに、サンプルの外部サウンドデータの入った「sample」フォルダを移動してください。SonicPiでダミーで入れてあるパスを削除します。

「sample」の中からファイルをどれか選び、SonicPi画面にドラッグドロップします。

「filename = 」のあとにファイルパスが続くように整えてください。

きちんとファイルパスを指定できるとこのようになります。「Run」ボタンで音が鳴ることを確認してください。


ランダムに音を鳴らすプログラム

次に外部サウンドファイルを、ランダムに選択するようにします。

ファイルパスを「path」で途中まで指定し、ファイル名の直前の「/(スラッシュ)」は残します。

「filename」には外部サウンドのファイル名を「,(コンマ)」で区切って並べ、「choose」とすることで、ファイル名だけをランダムに選びます。

path = "C:/Users/xxxx/Desktop/sample/"

filename = ["can_0.wav","can_1.wav"].choose

path + filename」とすることで、ひとつのファイルパスに戻すことができます。

sample path + filename, beat_stretch: 1

chooseの中を増やすこともできます。

filename = ["can_0.wav","can_1.wav", "can_2.wav", "can_3.wav"].choose

音の長さをランダムにします。

 t = [0.25,0.25,0.5,1.0].choose
 sample path + filename, beat_stretch: t
 sleep t

今回のベースとするプログラム

use_bpm 120

live_loop :can do
  path = "C:/Users/user/Desktop/sample/"
  
  
  filename = ["whistle_0.wav","whistle_1.wav"].choose
  t = [0.25,0.25,0.5,1.0].choose
  sample path + filename, beat_stretch: t
  sleep t
end

 


応用したプログラム

参考サイト

solenoids = "C:/Users/user/Desktop/sample/"
use_bpm 110

live_loop :solenoid1 do
  sample solenoids+"loop_4.wav", beat_stretch: 4, amp: 2
  sleep 4
end

live_loop :kick do
  sample :bd_haus, rate: 0.8, amp: 2
  sleep 1
end

live_loop :solenoid2 do
  samplename = ["hit_1.wav", "hit_2.wav", "hit_3.wav", "hit_4.wav", "hit_5.wav", "hit_6.wav", "hit_7.wav"].choose
  time = [0.25, 0.5, 0.75].choose
  sample solenoids + samplename, amp: 1.5, rate: 2, pan: rrand(-0.8, 0.8)
  sleep time
end

with_fx :reverb do
  live_loop :solenoid3 do
    sleep 2
    sample solenoids + "hit_6.wav", rate: (ring 0.5, 0.55, 0.6, 0.65).tick, amp: 1.5
    sleep 2
  end
end# Welcome to Sonic Pi v3.1

コンペ応募のコツ

過去の情報をリサーチする

印象をつかむ(ざっくり選ばれる)

  • キャッチーなタイトル。
  • 短い言葉でわかりやすいコンセプト。
  • ビジュアルに訴えるレイアウト。

過去作品からレイアウトを学ぶ
提出1:Googleスライドで、レイアウトの分析

1人5案出す。
提出2:Googleフォームで提出。


文字情報

  • 印象つける文字の大きさ
  • 読ませるための文字の大きさ
  • 文字数を減らして、内容を濃くする

より惹きつける(選ばれた中からさらに選ばれる)

  • オリジナルロゴ。
  • 数字の使い方。
  • テキストの整理。

Processingによるプログラミング

//色の変化の総数
int maxColor=7;

//色の変化(RGB)
int[][] col = {
  {200, 200, 0}, 
  {200, 200, 20}, 
  {250, 250, 200}, 
  {255, 255, 230}, 
  {200, 20, 20}, 
  {200, 200, 0}, 
  {50, 50, 200}, 
};

//各変化のスピード
float[] speed={
  0.05, 
  0.05, 
  0.05, 
  0.05, 
  0.05, 
  0.05, 
  0.05, 
};

//クリックで進むカウンタ変数
int count;


void setup() {
  size(600, 600);
  noStroke();  
  background(0);
}

void draw() {
  fill(col[count][0], col[count][1], col[count][2], 255*speed[count]);
  rect(0, 0, 600, 600);
}

void mousePressed() {
  count++;
  if (count>=maxColor) {
    count=0;
  }
}




3軸加速度を無線で送受信する

マイクロビットの「無線」は、マイクロビット同士に限り、無線通信ができます。

本日の流れ

  1. 準備するもの
  2. 無線グループ分け
  3. 受信側のマイクロビット
  4. 送信側のマイクロビット
  5. つなぎかた
  6. 動作確認

 


1. 準備するもの

  • マイクロビット   2つ
  • USBケーブル   2つ
  • 電池ボックス   1つ
  • 単3電池     2本

2. 無線グループ分け

本来は、無線のグループ番号をバラバラにして、その無線グループで通信します。無線のグループ番号は、0~255まで設定できます。

今回は「1」としてください。


3. 受信側のマイクロビット

まず「受信側」を作ります。

無線のグループは、先ほど決めた、自分だけのグループ番号にしてください。

プログラムができたら書き込みを行ってください。


 

4. 送信側のマイクロビット

このプログラムは、今回は教卓の1台だけに書き込みますので、みなさんは何もしなくてよいです。

参考までにプログラムの中身を示しておきます。

無線のグループは、受信側と同じグループ番号にしてください。


 

5. つなぎかた

受信側のマイクロビット

USBケーブルでパソコンとつないでおきます。

送信側のマイクロビット

乾電池で動作するように、電池ボックスと電池を取り付けます。

電池が消耗するので、使わないときは、電池を浮かして電源オフにしておきます。


6. 動作の確認

「Arduino」のシリアルプロッタで、グラフ化して表示してみましょう。

 

 

デジタルイメージの表現

解像度

よく「ビット」で表されます。

数字がよくわからない時は、「2進数 10進数 変換」で検索する。

ビットは「0」「1」の2進数の世界を表します。

 

最大いくつまで?というのが知りたい

解像度は「段階」のことで、最大で何段階かを押さえておくことが重要です。

たとえば、「白から黒まで何段階か」と言う時「白黒の解像度」と呼びます。

 

8ビットの最小は0が8個、最大は1が8個。

16ビットの最小は0が16個、最大は1が16個。

32ビットの最小は0が32個、最大は1が32個。

 

調べてみてください。

ちなみに、サウンドでも解像度があります。