yoppa.org


SFC – デザインとプログラミング 2025

Strudel入門 2 – 最初のノート (音程のある音)

スライド資料

前回の「最初の音」に引き続き、Strudelの初歩を学んでいきます。今回は、前回のサンプリングされた音でリズムを作成する方法から発展させて、音程のあるノートを使用したメロディや和音の作成に挑戦します。音符を数字や文字で演奏する方法、異なるサウンドを組み合わせる技術、長いシーケンスの再生方法、さまざまな音階の使い方を説明しています。また、繰り返しや音の長さの変更、パターンの自動化に関する技術も取り上げ、複数のパターンを同時に演奏することも可能です。

本日の資料もStrudelのチュートリアルを使用しています。元の資料は以下にあります。

数字と音符

数字を使って音符を演奏する

note("48 52 55 59").sound("piano")
  • いろいろな数字を試してみましょう!
  • 55.5のような小数を試してみましょう

文字で音符を演奏する

note("c e g b").sound("piano")
height:300
  • さまざまな文字 (a – g) を試してください。
  • 実際に言葉になっているメロディーを見つけられますか?

黒鍵を演奏するためにフラットまたはシャープを追加します

note("db eb gb ab bb").sound("piano")

note("c# d# f# g# a#").sound("piano")
height:300

異なるオクターブの文字で音符を演奏する

note("c2 e3 g4 b5").sound("piano")
height:300

音符のアルファベット表記に慣れていない場合は、数字を使う方が簡単です。そのため、以下の例のほとんどでは数字を使用しています。正しい音符を演奏しやすくする方法については、後ほど説明します。

音を変える

無音程音の場合と同様に、次のようにして音符の音を変更できます

note("36 43, 52 59 62 64").sound("piano")

さまざまなサウンドを試してみましょう。

  • gm_electric_guitar_muted
  • gm_acoustic_bass
  • gm_voice_oohs
  • gm_blown_bottle
  • sawtooth
  • square
  • triangle
  • bd、sd、hhはどうですか?
  • .sound(“…”) を除去すると?

音を切り替える

note("48 67 63 [62, 58]")
.sound("piano gm_electric_guitar_muted")

複数のサウンドを重ねる

note("48 67 63 [62, 58]")
.sound("piano, gm_electric_guitar_muted")
  • noteとsoundのパターンが組み合わされています。
  • パターンを組み合わせる方法については後ほど詳しく説明します。

より長いシーケンス

シーケンスを分割して/速度を落とす

note("[36 34 41 39]/4").sound("gm_acoustic_bass")
  • /4括弧内のシーケンスを 4 サイクル (=8 秒) にわたって再生します。
  • したがって、4 つの音符はそれぞれ 2 秒の長さになります。
  • 括弧内にさらに音符を追加してみて、速度が速くなるかどうかを確認する。\

1サイクルごとに1つプレイ< … >

前のセクションでは、< … >(山括弧) を使用してサイクルごとに 1 つだけを再生できることを学びました。これは、より長いメロディーにも役立ちます。

note("<36 34 41 39>").sound("gm_acoustic_bass")

括弧内にさらに音符を追加してみて、テンポが同じままであることに注目してください。

  • 山括弧は実際には単なるショートカットです。
  • <a b c> = [a b c]/3
  • <a b c d> = [a b c d]/4

1サイクルごとに1つのシーケンスを再生する

2種類の括弧は様々な方法で組み合わせることができます。

以下は反復的なベースラインの例です。

note("<[36 48]*4 [34 46]*4 [41 53]*4 [39 51]*4>")
.sound("gm_acoustic_bass")

複数のことを交互に行う

note("60 <63 62 65 63>")
.sound("gm_xylophone")

これは音程のない音にも役立ちます:

sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

スケール

正しい音符を見つけるのは難しい場合があります。スケールが役立ちます。

setcpm(60)
n("0 2 4 <[6,8] [7,9]>")
.scale("C:minor").sound("piano")

いろいろな数字を試してみてください。どの数字でも良い響きになるはずです!

さまざまなスケールを試してみましょう。

  • C:major
  • A2:minor
  • D:dorian
  • G:mixolydian
  • A2:minor:pentatonic
  • F:major:pentatonic

スケールを自動化する

他のものと同様に、パターンを使用してスケールを自動化できます。

setcpm(60)
n("<0 -3>, 2 4 <[6,8] [7,9]>")
.scale("<C:major D:mixolydian>/4")
.sound("piano")

これらのスケールの意味が分からなくても心配はいりません。これらは、相性の良い異なる音符の組み合わせを表すラベルです。

ゆっくり時間をかけて、お好みのスケールを見つけてください。

繰り返して伸ばす

@で延長

note("c@3 eb").sound("gm_acoustic_bass")

@を使用しないのは@1を使用するのと同じです。上記の例では、cは3単位の長さで、ebは1単位の長さです。

番号を変えてみて下さい!

サブシーケンス内で伸長する

setcpm(60)
n("<[4@2 4] [5@2 5] [6@2 6] [5@2 5]>*2")
.scale("<C2:mixolydian F2:mixolydian>/4")
.sound("gm_acoustic_bass")

このグルーヴは shuffleと呼ばれます。各ビートには2つの音符があり、最初の音符は2番目の音符の2倍の長さになります。これはトリプレット・スウィングと呼ばれることもあります。ブルースやジャズでよく見られます。

複製する

setcpm(60)
note("c!2 [eb,<g a bb a>]").sound("piano")
  • !と*と@を切り替えてみてください
  • 違いは何ですか?

サンプルプログラム

上品なベースライン

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("gm_synth_bass_1")
.lpf(800)

上品なメロディー

note(`<
[~ 0] 2 [0 2] [~ 2]
[~ 0] 1 [0 1] [~ 1]
[~ 0] 3 [0 3] [~ 3]
[~ 0] 2 [0 2] [~ 2]
>*4`).scale("C4:minor")
.sound("gm_synth_strings_1")

上品なドラム

sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

上記のすべてを同時にプレイする方法があったら…

できます!! $: で!

複数のパターンを演奏する

複数のパターンを同時に再生したい場合は、各パターンの前に「$:」を記述する。

$: note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("gm_synth_bass_1").lpf(800)

$: n(`<
[~ 0] 2 [0 2] [~ 2]
[~ 0] 1 [0 1] [~ 1]
[~ 0] 3 [0 3] [~ 3]
[~ 0] 2 [0 2] [~ 2]
>*4`).scale("C4:minor")
.sound("gm_synth_strings_1")

$: sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

コードとスケール

// 音を同時に鳴らす
$: sound("piano*4")
  .note("[c, e, g]")

// --------------------------------------------
// コード (Chord = 和音)
// コードを演奏する
$: sound("piano*4")
  .n("[1, 2, 3]")
  .chord("C").voicing()

// いろいろなコードを試してみる
$: sound("piano*4")
  .n("[1, 2, 3]")
  .chord("<C F G>").voicing()

// カノン
$: sound("piano*4")
  .n("[1, 2, 3, 4]")
  .chord("<C G Am Em F C F G>").voicing()

// 王道進行
$: sound("piano*2")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()

// 王道進行アンサンブル
$: sound("supersaw(11, 16)")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()
  .lpf(sine.slow(32).range(1000, 8000)).resonance(10)
  .room(0.9)
$: sound("supersaw(9, 16)")
  .note("<F2 G2 A2 E2>".add("<-12 0 12>*4"))
  .lpf(sine.slow(24).range(1000, 8000)).resonance(8)
  .room(0.9).gain(1.8)
$: sound("bd(3, 8), hh(4, 8, 1)").bank("RolandTR909")
  .gain(1.2)

// 王道進行アンサンブル + 分数コード
$: sound("supersaw(9, 16, 3)")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()
  .lpf(sine.slow(32).range(1000, 8000)).resonance(10)
  .room(0.9)
$: sound("supersaw(9, 16)")
  .note("<F2 E2 D2 [C2 A1]>/2".add("<-12 0 12>*4"))
  .lpf(sine.slow(24).range(1000, 4000)).resonance(10)
  .gain(1.8)
$: sound("bd(4, 8), hh(4, 8, 1)").bank("RolandMC303")
  .delay(0.5).delaytime(3/8)
  .gain(1.3)

// --------------------------------------------
// スケール (scale = 旋法)
// イオニアンスケール
$: sound("piano*8")
  .n("0 1 2 3 4 5 6 7")
  .scale("C:ionian")

// スケール内の音をランダムに演奏する
$: sound("piano*8")
  .n(irand(12))
  .scale(“C:hirajoshi")

// スケールによる即興
$: sound("supersaw(5, 8)")
  .n(irand(19))
  .scale("C1:pentatonic").jux(rev).room(0.8)
  .delay(0.7).delaytime(3/8)
  .lpf(rand.range(400, 5000)).resonance(12).legato(1.2)
$: sound("supersaw*16")
  .n(irand(19))
  .scale("C3:pentatonic").jux(rev).room(0.8)
  .lpf(rand.range(400, 4000)).resonance(8)
  .delay(0.7).delaytime(5/8).legato(0.75)

いよいよ本物の音楽のような音になってきました!音と音符は揃いましたが、あとはエフェクトというパズルの最後のピースが残っています。