yoppa.org


前橋工科大学 – サウンドプログラミング2024

TidalCycles応用 1 – シンセサイザーを使う

TidalCycleでここまで使用してきた方法では、サンプリング(録音)したサウンドファイルを演奏してきました (cp hc bdなど) 。これは楽器に例えるなら、サンプラーを演奏している状態です。TidalCyclesではこの他にシンセサイザーのように音の波形を合成して演奏する「楽器」も用意されています。このシンセサイザーの機能はSuperCollider内で楽器 (Synth) として定義されていて、自分自身でプログラミングすることでオリジナルの楽器を作成することも可能です。今回の授業の前半はこのTidalCyclesのシンセサイザーの機能に着目していろいろ実験していきます。

シンセサイザーを使用するには、SuperColliderにSC3 Pluginsがインストールされている必要があります。下記のリンクから最新版のものをダウンロードして所定の場所にインストールしてください。

参考:

シンセサイザー

Sequential Circuits Prophet 5 (アナログシンセサイザー)
YAMAHA DX-7 (デジタルシンセサイザー)
Eurorack (モジュラーシンセサイザー)

スライド資料

アンケート

本日の講義を履修した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら

サンプルコード

TidalCycles

-- シンプルにシンセを鳴らしてみる
d1
  $ s "supersaw*4"
  # note 0

-- 音階で指定 シャープ
d1
  $ s "supersaw*4"
  # note "cs5"

-- 音階で指定 フラット
d1
  $ s "supersaw*4"
  # note "df5"

-- シンセの音色の種類を変えてみる
d1
  $ s "supersaw superpwm supersquare superzow"
  # note 0
  
-- シンセの種類
-- supermandolin, supergong, superpiano, superhex, superkick, super808, 
-- superhat, supersnare, superclap, supersiren, supersquare, supersaw, 
-- superpwm, supercomparator, superchip, supernoise, superfork, 
-- superhammond, supervibe, superhoover, superzow, superstatic, 
-- supergrind, superprimes, superwavemechanics, supertron, superreese
  
-- 音階を弾く
d1
  $ s "supersaw*4"
  # note "0 4 5 7"
  
-- ランダムな音階
d1
  $ s "supersaw*8"
  # note (irand 12)

-- 短かい持続
d1
  $ s "supersaw*8"
  # legato "0.5"
  # note (irand 12)

-- 短かい持続と長い持続
d1
  $ s "supersaw*8"
  # legato "<0.5 1.2>*8"
  # note (irand 12)

-- メロディーを生成してみる
d1
  $ s "supersaw(11, 16)"
  # legato "<0.5 1.5>*8"
  # note "{c4 e4 f4 g4 b4}%11"
  |+ note "[0, 7, 12]"

-- メロディーを生成+変形
d1
  $ jux (iter 16)
  $ s "supersaw(11, 16)"
  # legato "<0.5 1.5>*8"
  # note "{c4 e4 f4 g4 b4}%11"
  |-note "0 12"
  |+note "[0, 7, 12]"

-- メロディーを生成+変形+エフェクト
d1
  $ jux (iter 16)
  $ s "supersaw(11, 16)"
  # legato "<0.5 1.5>*8"
  # note "{c4 e4 f4 g4 b4}%11"
  |- note "0 12"
  |+ note "[0, 7, 12]"
  # lpf(range 100 12000 $rand)
  # resonance "0.2"
  # delay "0.5" # delaytime "0.25"
  # delayfeedback "0.7"

Strudel (1行ごとにコピペして使用)

// シンプルにシンセを鳴らしてみる
$: s("supersaw*4").note(60)

// 音階で指定
$: s("supersaw*4").note("c4")

// 半音階、シャープ
$: s("supersaw*4").note("cs4")

// 半音階、フラット
$: s("supersaw*4").note("db4")

// シンセの音色の種類を変えてみる
$: s("supersaw sine square triangle").note(60)

// 音階を弾く
$: s("supersaw*4").note("c d e f")

// ランダムな音階
$: s("supersaw*4").note(irand(12).add(40))

// 短かい持続
$: s("supersaw*4")
note(irand(12).add(40)).legato(0.2)

// 短かい持続と長い持続
$: s("supersaw*4")
.note(irand(12).add(40)).legato("<0.2 1.0>*4")

// メロディーの生成
$: s("supersaw*8")
  .legato("<1.2 0.5>*8")
  .note("<c4 e4 f4 g4 b4>*8"

// メロディーの生成
$: s("supersaw*8")
  .legato("<0.5 1.2>*8")
  .note("<c4 e4 f4 g4 b4>*8"
  .add("0 -12")
  .add("[0, 7, 12]"))

// メロディーの生成2
$: s("supersaw*8")
  .note("{40 44 45 47 49 52}%11".add("[0, <5 7>, 12], 24"))

// メロディー + フィルター + エフェクト
$: s("supersaw*8")
  .note("{40 44 45 47 49 52}%11".add("[0, <5 7>, 12]"))
  .lpf("<400 2000 1200 8000>*8").delay(0.75).delaytime(0.125)

// メロディー + フィルター + エフェクト その2
$: s("supersaw(11, 16)")
  .note("{40 47 52}%21"
  .add("[0, <5 7 -5>]")
  .add("<0 12 -12 24>*4"))
  .lpf(sine.segment(32).range(400, 8000)).resonance(12)
  .delay(0.75).delaytime(0.125).delayfeedback(0.7)

// メロディー + フィルター + エフェクト + リズム
$: s("supersaw(5, 16, [0, 5, 12])")
  .note(
    "<c d e f g a>*2"
    .add("[0, <12 -12>]")
    .add("[0, 7, 12]")
    .add("<-12 -12 -12 0>/8")
  )
  .legato("<0.5 1.7>*2")
  .delay(0.75).delaytime(0.625).delayfeedback(0.5)
  .lpf(sine.segment(32).range(100, 8000)).resonance(10)
$: s("bd(3, 8), [~ hh]*4")
  .bank("RolandTR909")
  .gain(1.3)