TidalCyclesまとめ

TidalCycles(タイダルサークル). 略してTidal.


設計思想/Archtectures

ref. https://tidalcycles.org/docs/getting-started/tidal_start

  • A Pattern Library
    1. Your text editor
    2. The interpreter (Haskell)
  • An audio engine
    1. SuperDirt for receiving messages and turning them to sound.
    2. SuperCollider, sending sound out.

Tools

Dirt

Dirt Sampler. Tidalに組み込まれた Experimental sample playback

strudel

TidalcyclesのJavascript実装. つまりブラウザで動く.

with p5.js

Syntax Basics

Cycles

TidalCyclesのCyclesはサイクル毎秒, cycle per second. BPMではない.

Cycles | Tidal Cycles

以下のようにかくとBPMのように指定できる. 130BPM.

-- Set cps to be a fast house beat
setcps (130/60/4)

d1-d9

トラックを示す. 同時に9トラックを演奏可能.

曲を止める

  • d1 silene: トラックを止める
  • hush: すべて止める

Drums

TidalCyclesでドラムパターンを作る方法8選 – moistpeace official

mini notation

リズムパターンを生み出すための特別なシンタックス.

Mini Notation | Tidal Cycles

Tidal functions

いわゆるオーディオエフェクト.

Tidalcycles functionの使い方(随時更新) – moistpeace official

サンプルの利用

default samples

まずはこの素材から.

custom Loading Samples

SuperCollider起動時にスタートアップスクリプトでload

Getting Started

音を鳴らす

ref. Start Tidal | Tidal Cycles

  • SuperCollider IDE(scide)を立ち上げる.
  • ServerタブからBoot ServerでSuperColliderサーバ起動
  • SuperCollider IDEのエディタからSuperDirt起動. エディタに以下を貼り付けて評価.
SuperDirt.start;
  • EmacsでC-c C-sでTidalを起動.
  • Emacs で C-c C-eで評価.
d1 $ sound "bd sn"

これだとまだ鳴らなくて, さらにSuperDirt.start; をすると音がなった. 調査中…

起動スクリプト

環境変数の関係?で、ターミナルからVScodeを起動しないとうまく動かない.

@echo off
echo Starting TidalCycles Studio...
 
REM SuperColliderを起動
echo Starting SuperCollider...
start "" "C:\Program Files\SuperCollider-3.14.0\scide.exe"
 
 
REM 少し待ってからVS Codeを起動
echo Waiting for SuperCollider to load...
timeout /t 5 /nobreak > nul
 
echo Starting VS Code with TidalCycles...
cd /d C:\Users\fox10\repo\kitakita
stack exec -- code .
 
echo TidalCycles Studio is ready!
echo Remember to run: SuperDirt.start; in SuperCollider
pause

BootTidal.hs

:set -XOverloadedStrings
 
import Sound.Tidal.Context
 
tidal <- startTidal (superdirtTarget {oLatency = 0.1, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cFrameTimespan = 1/20})
 
let p = streamReplace tidal
let hush = streamHush tidal
let setcps v = streamOnce tidal $ cps v
let d1 = p 1
let d2 = p 2
let d3 = p 3
let d4 = p 4
  • setcpsが文字化け対策.

Environment

Jackではなくpipewireで音を鳴らしたい

pw-jackをつかってSuperColliderを起動する.

$ pw-jack scide

ref. Supercollider - jack - pipewire - bluetooth? (linux) - Questions and Answers - Tidal Club

with Emacs

  • haskel-mode
  • tidal

tidal-mode

https://github.com/tidalcycles/Tidal/blob/dev/tidal.el

keybindもsrcをみる.

  • C-c C-s: tidal-start-haskell:
  • C-c C-q: tidal-quit-haskell
  • C-c RET: 一行eval
  • C-c C-e: リージョンをeval

<2024-07-21 Sun 18:39> なんか🔧Emacs CIDERに似ているな.

custom function

tidal-stop-allがほしい(hush)

Emacs Tidal Babel

Emacs tidal babel - Resources - Tidal Club

DAW連携

DAW | Tidal Cycles, 公式wikiではAbelton/Bitwig/Renoiseへのリンクがある.

  • recording活用
  • DAWの音源利用
  • DAWのエフェクト利用

TidalCyclesの音をオーディオとして録音

TidalCyclesで音を鳴らしてそれをDAWでRecording. MIDIキーボードでの打ち込みの代替.

TidalCycles: Recording Separate Channels from Tidalcycles to a DAW - YouTube

SuperDirt は通常 音声を TidalCycles 内部の SuperCollider で鳴らすので、そのままでは Bitwig に入ってきません。

→ SuperCollider でオーディオ出力をルーティングして Bitwig のオーディオ入力に送る

Windows なら Virtual Audio Cable / VB-CABLE を使う。

TidalCycles → DAW に「MIDI を送る」

仮想MIDIケーブル/Virtual loopback MIDI cable]

  • Windows: LoopMIDI

instrument not found: midi

これは Tidal 側の s “midi” に対応する楽器がSuperDirt 側でまだ登録されていないのが原因でした。

Tidal:s “midi” SuperDirt:~dirt.soundLibrary.addMIDI(\midi, ~midiOut); で \midi を登録

この対応関係がそろって、はじめて s “midi” が有効になります。

Bitwig Studio

Windows

  • Preferences → Controllers → Generic MIDI Keyboard

Input: loopMIDI / IAC を選択

  • Instrument Track を作り、Bitwig プラグインをロード

その Track の入力を loopMIDI に設定

Linux only

  • ALSA Kernel module(snd-virmidi)で仮想MIDI Port作成
    • sudo modprobe snd-virmidi / acconect -l
  • ALSAとJack2をbridge
    • a2jmidid -e &
  • pw-jack scide
// initialize SuperCollider MIDI client
MIDIClient.init;
 
~midiOut = MIDIOut.newByName("Virtual Raw MIDI 1-0", "VirMIDI 1-0");
 
~dirt.soundLibrary.addMIDI(\midi, ~midiOut);
#+end_
  • Bitwig Studio 設定 > コントローラ > Generic > Virtual MIDI RAW/1を選択

Abelton live

物理フェーダでEQ調整

Controlling Ableton with Code – my live-coding setup and light tutorial - YouTube

refs

Dance Music with tidal

4つ打ち系の情報収集. ここに興味がある.

kick

d1 $ s "bd*4"

Tips

TidalCycles with TouchDesigner

Learning/Tutorials

TidalClub

👨Alex McLeanによる8weeksの講座.

👨Alex McLean

一番影響力がある人はこの人.

Refs

Lessons from the Luddites - Alex McLean(2017)

https://www.furtherfield.org/lessons-from-the-luddites/

ラッダイト運動とLivecoding.

📝ラッダイト運動

Slab

2000, ライブコーディング元祖. Alex McLean, Adrian Ward, Dave Griffithsのバンド.

The Generative Manifesto

https://slab.org/2015/07/28/the-generative-manifesto-august-2000/

Insights

  • <2024-08-07 Wed 18:45> チュートリアルをしてみて思ったことは, Tidalで曲をつくのは🎵ループシーケンサー, Bitwigだとクリップランチャーで曲をつくるのに似てる.
  • <2024-08-17 Sat 19:26> Tidalcyclesと相性がいいのはテクノだな. 日に日にそれは確信になってくる. メロディーを重視するようなハウスやトランスはないかな. cycliesという設計思想がまさにそうだ.

🔗References

japanese

Music

Code examples