yoppa.org


コンピュータミュージック 2017 - 明治大学先端メディアサイエンス学科

Sonic Pi 実践1 : 構造化 – イテレーション・ループ・条件分岐、データ構造 – リスト・和音・音階

今日の内容

  • より高度なSonic Piのプログラミング
  • プログラムの構造
    • ブロック
    • イテレーション・ループ
    • 条件分岐
  • 和音と旋律
    • 和音 chord の使用
    • 音階 scale の使用

Sonic Piでプログラムの構造を作る

  • 構造化プログラミング、3つの構成要素
  • 順次 (Sequence)、反復 (Iteration)、分岐 (Selection)

たとえば、Processingだと…

今までSonic Piで扱ってきたのは、順次と (単純な)反復

  • より複雑な反復のパターンを理解
  • 回数を指定した反復、反復のネスト

反復

回数を指定した反復

反復のネスト(入れ子構造)

今まで使用してきた「loop」や「live-loop」は無限ループだった

条件分岐

  • 条件分岐
  • Sonic Piでもif文が使える

条件分岐の例

  • if文と、one_in() を組合せる
    • one_in(N) : N回に1回の割合で発生させるランダム
    • サイコロを振る感覚

if と one_in のサンプル

if と one_in のサンプル 2

実習1

  • 反復を利用して、かっこいいリズムパターンを組んでみる
    • 反復とsleepによる微妙なニュアンス
    • 条件分岐とone_inによるゆらぎ
    • loopとlive_loop、どちらを使ったほうがやりやすいか?

例 : 複数のリズムの共存

Sonic Piのデータ構造

  • リスト(list)を使用してみる
  • リスト: データの集合、配列のようなもの
  • 前回、chooseを使用した際に既に使用していた

chooseとリスト

  • 一度に演奏

  • オプションを指定して一度に演奏

  • 音階で指定

リストの要素にアクセス (55が演奏される)

和音

  • chordを使用すると、コードネームを使用して和音を生成できる
  • 様々な複雑な和音が用意されている

いろいろなコードが定義されているので、試してみる!

  • playの代わりに play_pattern_timed を使うとリストをアルペジオ演奏できる
  • play_pattern_timed コードのリスト, 速さ
  • 例: Cメジャーを、0.25のタイミングで

いろいろなアルペジオを試してみる

音階(scale)

  • Sonic Piでは、和音と同様に様々な音階(scale)が定義されている
  • 例:「ドレミファソラシド」が演奏される → メジャースケール

いろいろな音階(scale)を試してみる

chooseとchord、chooseとscaleを組み合わせる

  • ランダムな選択と強い制約
  • 制限された調整の中でのランダムが簡単に実現できる

例1: マイナーコード (短三和音) から音を1つ選ぶ

例2: メジャーコード (長三和音) から音を1つ選ぶ

スケールを使用した即興

スケールを書き換えて聞き比べてみる

複数の楽器で + さらにパラメータを加えてみる

参考: 音階 (モード) による即興

次回までの課題!

  • これまで紹介してきたSonic Piの機能を活用して、ループする旋律を作曲する
    • 楽器(synth)とサンプル(sample)
    • 演奏(play)とパラメータ(amp, pan, atack, release, cutoff…)
    • 乱数(rrand, rrand_i, choose, one_in)
    • リスト(list)
    • 和音(chord)
    • 音階(scale)
  • 次回簡単な発表会を行います!