yoppa.org


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

TidalCycles入門

このページは、TidalCyclesのドキュメントを日本語訳したものです。オリジナルの英語のドキュメントは下記を参照してください。

このページは、TidalCyclesのチュートリアルです。ハンズオン形式の初心者向け、または様々なレベルの参加者がいるワークショップで、ワークシートとして使用されることを想定しています。Lucy Cheesman氏によって作成され、Alex McLean氏によってWiki形式に編集されました。

スタートガイド

必要なものがすべてインストールされたら、毎回以下の起動手順に従ってください。

SuperDirtの起動

SuperDirtは、SuperCollider IDEアプリケーションを実行すると自動的に起動するはずです。もし起動しない場合は、SuperCollider IDEのエディタウィンドウで「SuperDirt.start」と入力し、Ctrlキーを押しながらEnterキーを押してコードを実行してください(カーソルがコードと同じ行にある状態で)。

TidalCyclesの起動

お使いのテキストエディタ(Pulsar, vim, VS Codeなど)で新しいファイルを開始し、「.tidal」 という拡張子で保存します(例: 「examples.tidal」)。最初のコマンドを入力して実行すると、Tidalは自動的に起動します。

Estuary

コンピュータにTidalをインストールしていなくても、オンラインで試すことが可能です。Estuaryを使えば、Tidalや他のいくつかのライブコーディングシステムをブラウザ内で試すことができ、自分のコンピュータに何もインストールする必要はありません。

Estuaryは、学習、指導、他者との演奏、そして様々なライブコーディング言語をテストするのに最適な場所です。

ただし、EstuaryではTidalのすべての機能が動作するわけではなく、サブセット(Mini-Tidalと呼ばれます)のみが動作することに注意してください。

Haskellでの注釈

Haskellでは、行の先頭にある二重ダッシュ 「–」 はコメントを示します。コメントは、インタプリタによって無視されるコードです。コードにメモを追加するためにコメントを使用できます。また、特定の行やパターンを無視するためにも使用できます。

-- 私はコメントです

-- このパターンは再生されません
-- d1 $ s "bd hh sn hh"

-- "fast 2" は無視されます
d1
  -- $ fast 2
  $ s "hh*8"

基本的なパターン

Tidalで音を出すための基本的な形式は次のようになります。

d 1 $ sound "drum"

「silence」 を使って音を止めることができます。

d 1 $ silence

「sound」 で使用できる音には2種類あります。シンセサイザーの定義(「superpiano」 など、シンセサイザーの項を参照)か、サンプルのどちらかです。後者の場合、サンプルセットを含むフォルダの名前を書きます。デフォルトでは最初のサンプルが使用されますが、「:」 と数字を使って同じセットから異なるサンプルを選ぶことができます。

d 1 $ sound "drum:1"

また、フォルダとサンプルを2つの部分に分けて指定することも可能です。

d 1 $ sound "drum" # n 1

「s」 は 「sound」 の同義語(シノニム)であるため、「d1 $ s “drum” # n 1」 も同じパターンです。

デフォルトのサンプルライブラリ

Tidalに付属しているサンプルの一部を以下に示します。いくつか試してみてください。

「flick」「sid」「can」「metal」「future」「gabba」「sn」「mouth」「co」「gretsch」「mt」「arp」「h」「cp」「cr」「newnotes」「bass」「hc」「tabla」「bass0」hh」「bass1」「bass2」「oc」「bass3」「ho」「odx」「diphone2」「house」「off」「ht」「tink」「perc」「bd」「industrial」「pluck」「trump」「printshort」「jazz」「voodoo」「birds3」「procshort」「blip」「drum」「jvbass」「psr」「wobble」「drumtraks」「koy」「rave」「bottle」「kurt」「latibro」「rm」「sax」「lighter」「lt」「arpy」「feel」「less」「stab」「ul」

デフォルトライブラリにある他のサウンドは、「Dirt-Samples」 フォルダを調べることで確認できます。SuperColliderのメニューから「File > Open user support directory > downloaded-quarks > Dirt-Samples」で見つけられます。さらに、独自のカスタムサンプルを追加することもできます。Pulsarエディタでは、すべてのDirt-Samplesを含むタブをロードする設定を追加できます(Pulsarを参照)。

シーケンスを作ってみましょう。

d 1 $ sound "bd hh sn hh"

シーケンスのステップ数が多いほど、再生速度は速くなります。

d 1 $ sound "bd bd hh bd sn bd hh bd"

これはTidalが時間を扱う方法によるものです。常に実行されている普遍的なサイクル(音楽的な「小節」のようなもの)があります。Tidalは、特に指示しない限り、引用符で囲まれたすべてのサウンドを1サイクル内で再生します(その方法は後で学びます)。また、Tidalがサイクル内でサウンドを均等に配置することにも気づくでしょう。これにより、ポリリズミックな構造(詳細は後述)が生まれます。「setcps」(cpsはcycles per secondの略)を使ってサイクルの長さを変更できます。これはbpm(beats per minute)に似ています。

setcps 0.6

「d1」, 「d2」, 「d3」…「d9」 を使って、複数のシーケンスを同時に再生できます。

d 2 $ sound "sn sn:2 sn bd sn"

「hush」(またはCtrl + .)で実行中のすべてのパターンを停止できます。

サイクルの長さを負の数に変更することで、すべてを一時停止できます(負の数は括弧で囲むことを忘れないでください)。

setcps (-1)

正の数で再び開始します。

setcps 0.6

または、1つのチャンネルをソロにすることもできます。

d 1 $ sound "arpy cp arpy:2"
d 2 $ sound "sn sn:2 bd sn"

solo 2
-- これで2番目のパターンのみが再生されます

unsolo 2
-- これで両方が再び再生されます

mute 2
-- これで1番目のパターンのみが再生されます

unmute 2 -- (または unmuteAll)
-- これで両方が再生されます

Pulsarプラグインは、これらの一般的な操作のためにいくつかのキーショートカットを追加します。例えば、Ctrl+1で最初のパターンのミュートを切り替えたり、Ctrl+0ですべてのミュートを解除したりします。Pulsar内で「Edit > Preferences > Packages」に移動し、「tidalcycles」を選択し、Keybindingsセクションまでスクロールダウンすると、キーバインディングの完全なリストを見ることができます。

より多くのバリエーション

シーケンスにもっと多様性を加えてみましょう。

「~」 で無音/休符を追加します。

d 1 $ sound "bd ~ sn:3 bd sn:5 ~ bd:2 sn:2"

角括弧 「[]」 でサブシーケンスを1ステップに収めます。

d 1 $ sound "bd [bd cp] bd bd"

これは柔軟な拍子記号を作ることができます。

d 1 $ sound "[bd bd sn:5] [bd sn:3]"

サブシーケンスの中にサブシーケンスを入れることもできます。

d 1 $ sound "[[bd bd] bd sn:5] [bd sn:3]"

さらに続けます…

d 1 $ sound "[[bd [bd bd bd bd]] bd sn:5] [bd sn:3]"

「*」 でステップを繰り返すことができます。

d 1 $ sound "bd sd*2"

これはサブシーケンスでも機能します。

d 1 $ sound "bd [sd cp]*2"

または 「/」 を使って逆のこともできます。

d 1 $ sound "bd sn/2"
d 1 $ sound "bd [sn cp]/2"

「*」 はステップを「スピードアップ」して複数回再生することで機能します。「/」 は「スローダウン」することで機能します。

「\<」 と 「>」 を使って、サイクルをまたいでパターンをスケジュールすることもできます。

d 1 $ sound "bd <sd cp arpy>"
d 1 $ sound "<bd sn> <sd [cp cp]> <bd [cp cp]>"

これらの例で使用している構文はミニノーテーションと呼ばれ、「sound」 関数だけでなく、Tidal内の多くの場所で使用できます。

その他の一般的なミニノーテーション記号には、ランダムなオプションを選択する 「|」、2つのパターンを同時に再生する 「,」、パターンを複製する 「!」 があります。

2つのサンプルからランダムに1つを選びます。

d 1 $ sound "[bd:0|bd:1]"
d 1 $ sound "[sn|cp]"

スネアとクラップを同時に再生します。

d 1 $ sound "[sn,cp]"

3つのバスドラムと1つのスネアを再生します。

d 1 $ sound "bd!3 sn"

これと 「”bd*3 sn”」 との違いに注意してください。最初の例では4つのイベントがあり、すべて同じ長さを持ちます。後者では、3つの 「bd」 がサイクルの半分を占め、「sn」 が残りの半分を占めます。「”bd!3 sn”」 は 「bd bd bd sn」 と同じです。

エフェクト

Vowel (母音)

Tidalには、サウンドの聞こえ方を変えるための多くのエフェクトがあります。「vowel」 は母音のようなサウンドを追加するフィルターです。「a」, 「e」, 「i」, 「o」, 「u」 を試してみてください。

d 1 $ sound "drum drum drum drum" # vowel "a"

サウンドのパターンを作るのとほぼ同じ方法で、エフェクトのパターンも作れます。これらを「コントロールパターン」と呼びます。

d 1 $ sound "drum drum drum drum" # vowel "a o e e"

「\<>」 を使ってサイクルをまたいでスケジュールできることを思い出してください。

d 1 $ sound "drum drum drum drum" # vowel "<a o e e>"

母音以外の文字を追加すると、vowelエフェクトを一時停止できます。

d 1 $ sound "drum drum drum drum" # vowel "a o p p"

Tidalはパターン同士をマッピングしようと最善を尽くします。

d 1 $ sound "drum drum drum drum" # vowel "a o e"

構造は左側から来ます。パラメータを入れ替えてみてください。

d 1 $ vowel "a o ~ i" # sound "drum"

Gain, pitch and panorama (音量、ピッチ、パン)

「gain」 は異なるサウンドの音量を変更します。

d 1 $ sound "bd hh sn:1 hh sn:1 hh" # gain "1 0.7 0.5"

「speed」 と 「note」 はサンプルのピッチングに使用されます。「speed」 は再生速度に影響します(例: 「2」 = 1オクターブ上)。

d 1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # speed "1 1.5 2 0.5"

または、「speed」 パラメータからパターンを取ることもできます。

d 1 $ speed "1 2 4" # sound "jungbass:6"

「up」 はサンプルを半音単位でピッチを上げます(例: 「12」 = 1オクターブ上)。

d 1 $ up "0 ~ 12 24" # sound "jungbass:6"

「pan」 はステレオエフェクトを作成できます(「0」 = 左、「0.5」 = 中央、「1」 = 右)。

d 1 $ sound "numbers:1 numbers:2 numbers:3 numbers:4" # pan "0 0.5 1"

Distortion, reverb, delay and filters (ディストーション、リバーブ、ディレイ、フィルター)

「shape」 はディストーションを加えるために使えるいくつかの関数のうちの1つです(ただし注意してください – サウンドが非常に大きくなります)。

d 1 $ sound "kurt:4 kurt:4" # shape "0 0.78" # gain "0.7"

ディレイは、最大4つの関数の組み合わせによって実現されます。

d 1 $ sound "cp" # delay 0.8 # delaytime (1/6) # delayfeedback 0.6 # lock 1

「lock 1」 を使用して、「delaytime」 に提供される時間が秒ではなくサイクル単位であることを示します。

これらすべてがパターンを受け取ります。

d 1 $ sound "industrial:3*4" # delay "<0 0.4 0.8>" # delaytime "0.2 0.05" # delayfeedback "<0.5 0.9>" # lock 1

リバーブエフェクトを追加するには、「dry」、「room」、「size」 関数を使用します。

d 1 $ sound "[~ sn]*2" # dry 0.4 # room 0.6 # size 0.8

ローパス、ハイパス、DJタイプフィルターなど、いくつかの周波数フィルターも利用できます。

ローパスフィルター:

d 1 $ sound "tabla*4" # n "0 1 2 3" # cutoff 400 # resonance 0.2

ハイパスフィルター:

d 1 $ sound "tabla*4" # n "0 1 2 3" # hcutoff 600 # hresonance 0.2

「cutoff」 と 「hcutoff」 はカットオフポイントの周波数をヘルツ単位で受け取ります。「resonance」 と 「hresonance」 は0から1の範囲ですが、レゾナンスの値が高いと非常に大きな音になる可能性があるため注意してください。

「djf」 はより即時的なフィルターです。0から1の間の数値を受け取ります。0.5未満の値ではローパスフィルター、0.5より大きい値ではハイパスフィルターとして機能します。

エフェクトについてさらに学び、エフェクトの完全なリストを見るには、エフェクトのセクションを参照してください。

パターンの変換

変換を使用することで、より複雑なパターンを作り始めることができます。「slow」 のような関数を使うと、サイクルを超越し始めることができます。「slow」 はパターンをより多くのサイクルに引き伸ばします。

Slow, fast and hurry (低速、高速、急ぎ)

d 1 $ sound "arpy arpy:1 arpy:2 arpy:3"
d 1 $ slow 2 $ sound "arpy arpy:1 arpy:2 arpy:3"

「fast」 はパターンを1サイクル未満に圧縮します。「density」 と書かれているのを見るかもしれませんが、同じものです。見てみましょう。

「fast 0.5」 は 「slow 2」 と同じです!

d 1 $ fast 2 $ sound "arpy arpy:1 arpy:2 arpy:3"
d 1 $ fast 0.5 $ sound "arpy arpy:1 arpy:2 arpy:3"

「hurry」 は 「fast」 に似ていますが、「speed」 変換も適用します。

d 1 $ sound "arpy arpy arpy:1 arpy:2"
d 1 $ hurry 2 $ sound "arpy arpy arpy:1 arpy:2"
d 1 $ hurry 0.5 $ sound "arpy arpy arpy:1 arpy:2"

時間を変更する関数についてさらに学ぶには、リファレンスの「時間」セクションを参照してください。

パターンの再編成

Tidal Cyclesは、パターンをさまざまな方法で変更するために使用できる多くの関数を提供します。このセクションでは、その一部を紹介しますが、他にもたくさんあります。詳細については、これらのリファレンスセクション(変更、蓄積、条件)を確認してください。

「rev」 でパターンを反転できます。

d 1 $ rev $ sound "arpy arpy:1 arpy:2 arpy:3"

または 「palindrome」 で順方向に再生してから逆方向に再生します。

d 1 $ palindrome $ sound "arpy arpy:1 arpy:2 arpy:3"

「iter」 は、サイクルごとに異なるポイントからパターンを開始し、元の場所に戻るまで指定された回数だけシフトさせます。

d 1 $ iter 4 $ sound "arpy arpy:1 arpy:2 arpy:3"

「every」 は、異なるサイクルで変換やエフェクトをスケジュールすることができます。次の例は、4サイクルごとに2倍の速さで再生します。

d 1 $ every 4 (fast 2) $ sound "arpy arpy:1 arpy:2 arpy:3"

… または、「#」 を使って同じ方法でエフェクトをスケジュールすることもできます。

d 1 $ every 4 (# vowel "a o") $ sound "arpy arpy:1 arpy:2 arpy:3"

「jux」(juxtaposeの略)は、変換またはエフェクトを受け取り、一方のスピーカーでそれを再生し、もう一方のスピーカーで元のパターンを再生します。

d 1 $ sound "arpy arpy:1 arpy:2 arpy:3"
d 1 $ jux (rev) $ sound "arpy arpy:1 arpy:2 arpy:3"
d 1 $ jux (hurry 2) $ sound "arpy arpy:1 arpy:2"

「chunk」 は、毎回パターンの異なる部分に変換またはエフェクトを適用します。例えば、パラメータとして 「4」 を指定すると、サイクルの各4分の1を順に処理します。

d 1 $ chunk 4 (hurry 2) $ sound "arpy arpy:1 arpy:2 arpy:3"
d 1 $ chunk 4 (# speed 2) $ sound "alphabet:0 alphabet:1 alphabet:2 alphabet:3"

さらに変換の奥深くへ

複数の変換も可能です! 「.」 を使ってそれらを連鎖させることができます。

d 1 $ jux (rev . (slow 1.5)) $ sound "arpy arpy:1 arpy:2 arpy:3"

(ほとんど)すべてがパターンであることを忘れないでください。したがって、これらの変換をエフェクトにも適用できます。

d 1 $ sound "jvbass [jvbass jvbass] jvbass ~" # note "1 [3 5] 7"
d 1 $ sound "jvbass [jvbass jvbass] jvbass ~" # iter 3 (note "1 [3 5] 7")

「fast」 または 「slow」、「range」、そして 「sine」 や 「saw」 のようなオシレーターを使用して、任意のパラメータにLFO(低周波オシレーター)を作成できます。

d 1 $ s "bd*8" # pan (slow 4 $ sine)
d 1 $ s "moog*16" # n "<0 1 2>" # legato 1 # cutoff (range 200 2400 $ saw) # resonance 0.2

デフォルトでは、「sine」、「cosine」、「saw」 のようなオシレーターは0から1までの値を与えます。これは一部のパラメータ(「pan」 など)には問題ありませんが、「range」 を使ってこれらの値を必要な範囲にスケーリングできます。

前の例では、イベントごとに1つのオシレーター値がトリガーされます。サイクルあたりのイベントが多い場合はこれで問題ありません。しかし、イベントが少なく、より長い場合、LFOの滑らかな動きを実現するためには、オシレーターから複数の値を選ぶ必要があります。これはコントロールバスを使用して行うことができます。

d 1 $ s "moog" # n "<0 1 2>" # legato 1 # cutoffbus 1 (segment 32 $ range 200 2400 $ saw) # resonance 0.2

ここでは、サイクル中にサウンドが徐々に変化するのが聞こえます。多くのパラメータにはバスがあり、すべてパラメータ名に 「bus」 が付いた名前になっています。この最後の例では、「segment 32」 がオシレーターにサイクルごとに32の値を選ぶよう指示しています。

異なる種類のパターン

「パターン」とは一体何でしょうか?いくつかの異なる種類のパターンと、Tidalがそれらをどのように表現できるかについて考えてみましょう。

循環的 / 反復的

「n」 を使ってフォルダからサンプルを選ぶことができます。これにより、そこにもパターンを適用できます。

d 1 $ n "0 1 2 3" # sound "arpy"

「run」 は連続したパターンを書き出すための短い方法です。

d 1 $ n (run 4) # sound "arpy"

または、次のように書くこともできます。

d 1 $ n "0 .. 3" # sound "arpy"

対称性

d 1 $ slow 2 $ n "0 1 2 3 3 2 1 0" # sound "arpy"
d 1 $ palindrome $ n (run 4) # sound "arpy"

ポリメトリック / ポリリズミックなシーケンス

角括弧 「[]」 を使い、カンマ 「,」 で区切ることで、2つのサブシーケンスを同時に再生します(1つの大きなサブシーケンスのように)。

d 1 $ sound "[voodoo voodoo:3, arpy arpy:4 arpy:2]"

角括弧の代わりに中括弧 「{}」 を使うと、異なる効果が得られます。角括弧の場合、シーケンスの両半分がサイクル内に収められます(ポリリズム)。中括弧の場合、パルスは左側のパターンによって設定されます。右側のパターンは、それをオーバーラップ(またはアンダーラップ!)することができます(ポリメーター)。

d 1 $ sound "[voodoo voodoo:3, arpy arpy:4 arpy:2]"
d 1 $ sound "{voodoo voodoo:3, arpy arpy:4 arpy:2}"
d 1 $ sound "[drum bd hh bd, can can:2 can:3 can:4 can:2]"
d 1 $ sound "{drum bd hh bd, can can:2 can:3 can:4 can:2}"
d 1 $ sound "[bd sn, can:2 can:3 can:1, arpy arpy:1 arpy:2 arpy:3 arpy:5]"
d 1 $ sound "{bd sn, can:2 can:3 can:1, arpy arpy:1 arpy:2 arpy:3 arpy:5}"

ユークリッドリズム / Bjorklund

パターン内の要素の後に括弧で2つの数字を指定すると、Tidalは最初の数のサウンドを2番目の数のステップに均等に分散させようとします。

d 1 $ sound "bd(5,8)"

この記法は、パターンの単一の要素内で使用できます。

d 1 $ sound "bd(3,8) sn*2"
d 1 $ sound "bd(3,8) sn(5,8)"

3番目のパラメータを追加することもできます。これはパターンを「回転」させ、異なるステップから開始します。

d 1 $ sound "bd(5,8,2)"

ランダム性

ランダム性は、パターンに素早く個性とバリエーションを導入するのに役立ちます。「sometimes」 は 「every」 のように機能しますが、設定された期間の後ではなく、変更はランダムな確率で現れます。

d 1 $ sometimes (# speed "2") $ sound "drum*8"

「often」(75%)は 「sometimes」(50%)のように機能しますが、より頻繁に発生します。

d 1 $ often (# speed "2") $ sound "drum*8"

「irand」 は、指定された数までのランダムな整数を生成します(例: ランダムなサンプルを再生するため)。

d 1 $ sound "arpy(3,8)" # n (irand 16)

「rand」 は0から1の間のランダムな小数を生成します。

d 1 $ sound "tink*16" # gain rand

「degradeBy」 を使ってランダムな要素を削除できます。数値はサンプルが再生される可能性を示します。

d 1 $ degradeBy 0.2 $ sound "tink*16"

(「degrade」 だけだと 「degradeBy 0.5」 と同じです)

または、「?」 を使って50%の確率でサウンドを削除できます。

d 1 $ sound "bd sn:2? bd sn?"

サンプルの操作

これまでは短いサンプルだけを使用してきました。長いサンプルは、注意しないと問題を引き起こす可能性があります。長いサンプルで何が起こるか見てみましょう。

d 1 $ sound "bev"
-- 少し待ってから..
hush

お分かりのように、Tidalは非常に長いサンプルであっても、サイクルごとにサンプルをトリガーし続けます。パターンの再生を停止しても、サンプルが再生し終わるまで聞いている必要があります。「cut」 を使うと、次のサンプルがトリガーされたときにサンプルを切り詰めることができます。

d 1 $ sound "bev" # cut 1

「cut」 の数字はグループを定義するため、異なるパターン間の干渉で遊ぶことができます。

d 1 $ sound "bev ~" # cut 1
d 2 $ slow 4 $ sound "pebbles ~" # cut 1

「legato」 もサンプルを切り詰めますが、固定長を使用します。

d 1 $ sound "bev ~ bev ~" # legato 1

サンプルを切り刻んで、グラニュラーシンセシスの効果を得ることもできます。

d 1 $ chop 32 $ sound "bev"

「striate」 は 「chop」 に似ていますが、再生を異なる方法で組織化します。

d 1 $ slow 4 $ chop 4 $ sound "arpy:1 arpy:2 arpy:3 arpy:4"
d 1 $ slow 4 $ striate 4 $ sound "arpy:1 arpy:2 arpy:3 arpy:4"

「randslice」 はサンプルを断片に切り刻み、サイクルごとにランダムな1つを再生します。

d 1 $ randslice 32 $ sound "bev"

「loopAt」 を使って、サンプルを設定されたサイクル数に合わせることもできます。

d 1 $ loopAt 8 $ sound "bev"

いつものように、これらの関数にパターンや変換を追加したり、それらを組み合わせて面白い効果を生み出したりできます。

d 1 $ loopAt "<8 4 16>" $ chop 64 $ sound "bev*4" # cut 1
d 1 $ rev $ loopAt 8 $ chop 128 $ sound "bev"

長いサンプルを操作するその他の方法については、サンプリングのリファレンスセクションを参照してください。

Superdirtシンセサイザー

これまではサンプルのみを使用してきましたが、SuperDirtには 「superpiano」、「supersaw」、「superfm」 のような多くのSupercolliderシンセサイザー(略してシンセ)も付属しています。

それぞれに独自の関数とパラメータがありますが、一般的にはサンプルと非常によく似た方法で使用できます。

d 1 $ n "0 4 7" # sound "superpiano"

MIDIやOSCを介して外部シンセサイザーを制御することもできます。

関数 n と note の違い

シンセを使用する場合、「n」 と 「note」 の両関数はまったく同じです。上記の例がCノート、Eノート(Cの4半音上)、Gノート(Cの7半音上)を再生していることにお気づきかもしれません。これは、以下とまったく同じです。

d 1 $ note "0 4 7" # sound "superpiano"

サンプルを使用する場合、「n」 はサンプルフォルダ内のファイルインデックスを指し、アルファベット順(昇順)にソートされ、0(ゼロ)から数えられます。もし楽器のすべてのノートをサンプリングしていれば、各サンプルがノートに対応することも可能です。しかし、「note」 を使用すると、サンプルはピッチが上下し(それに応じてサンプルのデュレーションも影響を受けます)、

例えば:

d 1 $ sound "bd*4" # n "<0 4>" # note "0 12 -7 -12"

これは、奇数サイクルでは 「bd」 フォルダの最初のサンプルを、偶数サイクルでは5番目のサンプルを再生します。各サイクルで、サンプルは4回再生されます。1回はそのまま、1回は1オクターブ上(12半音)、1回は5度下(7半音)、最後は1オクターブ下です。

ノートの演奏

このチュートリアルのほとんどはリズムに専念していますが、Tidal Cyclesはノート、スケール、コード、アルペジオを演奏する方法も提供します。

すでにノートの演奏方法は知っています。「note」 関数を使うか、ノートごとにサンプリングされた楽器の場合は 「n」 関数でノートを選びます。

アルファベットの最初の7文字(AからG)を使った西洋音楽理論の命名規則に基づいてノートを書くこともできます。例えば、これら2つのコードは同等です。

d 1 $ note "c a f e" # s "supermandolin"
d 1 $ note "0 9 5 4" # s "supermandolin"

ノート名はTidal内で単に数字に翻訳されるため、どちらの方法を使っても、あるいは両方を同時に使っても構いません!

ノート名の後に 「s」 や 「f」 を続けて、シャープやフラットを示すことができることに注意してください。また、「0」 と 「c」 は5番目のオクターブのCノートを指します。ノート名の後にオクターブ番号を追加することができます。

d 1 $ note "c4 a3 f6 e5" # s "supermandolin"

「|+」 や 「|-」 を使ってオクターブを移動するのも便利です。これは3番目のオクターブで再生されます。

d 1 $ note "c a f e" # s "superpiano" |- note 24

スケール、コード、アルペジオの演奏方法についてさらに知るには、「ハーモニー」またはハウツーの「アルペジオの構築」と「コードの演奏」を参照してください。

ここからどこへ進むか

いくつか提案があります。

  • 遊ぶ、試す、調査する。 ここには、あなたが始めるための十分な情報があります。必要に応じて、リファレンスページを調べてさらに学びましょう。
  • Alexのビデオコースに従う。 より長く、より深いチュートリアルで、たくさんの例とビデオサポートがあります。
  • フォーラムやDiscordサーバーに参加する。 助けを求めたり、他の人を助けたり、他の人がTidal Cyclesをどのように使っているかについて学びましょう。