2017/07/18

SuperCollider - PtparとPsetp

Ptpar は時間のオフセットを指定してパターンを重ねるときに使えるパターンです。 PsetpPaddp を使うことで重ねるパターンの一部を変更することができます。

例として音程を平行移動します。

( // Paddpを利用。
b = Pbind(\note, Pseq(Array.interpolation(8, 0, 7)), \dur, 0.1);
Ptpar([
  0.0, Paddp(\note, 0, b),
  2.0, Paddp(\note, 5, b),
  4.0, Paddp(\note, 9, b)
]).play;
)

( // Psetpを利用。
b = Pbind(\note, Pseq(Array.interpolation(8, 0, 7)), \dur, 0.1);
Ptpar([
  0.0, Psetp(\ctranspose, 0, b),
  2.0, Psetp(\ctranspose, 5, b),
  4.0, Psetp(\ctranspose, 9, b)
]).play;
)

( // Pbindで\degreeを使用。
b = Pbind(
  \scale, Scale.chromatic,
  \degree, Pseq(Array.interpolation(8, 0, 7)),
  \dur, 0.1);
Ptpar([
  0.0, Psetp(\ctranspose, 0, b),
  2.0, Psetp(\ctranspose, 5, b),
  4.0, Psetp(\ctranspose, 9, b)
]).play;
)

Pmulp で値をかけあわせることができます。

(
b = Pbind(
  \scale, Scale.chromatic,
  \degree, Pseq(Array.interpolation(8, 0, 7)),
  \dur, 0.1);
Ptpar([
  0.0, Pmulp(\dur, 2, b),
  2.0, Pmulp(\dur, 3, b),
  4.0, Pmulp(\dur, 5, b)
]).play;
)

組み合わせます。

(
b = Pbind(
  \scale, Scale.chromatic,
  \degree, Pseq(Array.interpolation(8, 0, 7)),
  \dur, 0.1);
Ptpar([
  0.0, Paddp(\degree, 0, Pmulp(\dur, 2, b)),
  2.0, Paddp(\degree, 5, Pmulp(\dur, 3, b)),
  4.0, Paddp(\degree, 9, Pmulp(\dur, 5, b))
]).play;
)