![見出し画像](https://assets.st-note.com/production/uploads/images/90373240/rectangle_large_type_2_bf142a3a81a3a1c455008d6b6a272886.png?width=1200)
15.ひとつの波形からバリエーションを作る(SuperCollider)
cubed
例えば220Hzのサイン波に
{SinOsc.ar(220!2)}.plot;
![](https://assets.st-note.com/img/1654299800230-99UMRXj027.png)
cubedというメソッドを使うと
{SinOsc.ar(220!2).cubed}.plot;
下記のような波形になります。
![](https://assets.st-note.com/img/1654299899785-rYE1ReCLu2.png)
再生すると当然サイン波とは違う音がします。
{SinOsc.ar(220!2).cubed}.play;
cubedは「3乗せよ」と指示するメソッドです。
サイン波は0→1→0→-1→0を周期的に繰り返しますが、それを3乗するので・・・(0の3乗は0、1の3乗は1、-1の3乗は-1なので)0→1→0→-1→0となり最大値最小値は変わらない、だけど0から1に至るまでの数値が変わるのでグラフのカーブが少し変わってくるんですね。それで先ほどのような形になります。
3乗した結果に対してもう一度3乗せよ、というのもアリです。
{SinOsc.ar(220!2).cubed.cubed}.plot;
![](https://assets.st-note.com/img/1654300421720-eW5RRrWdel.png)
鳴らしてみると、先ほどよりも倍音が少し多くなっていることがわかります。
もちろんノコギリ波などサイン波以外の波形に対しても有効です。
{LFSaw.ar(220!2)}.plot;
![](https://assets.st-note.com/img/1654300622992-wkDeiieVKW.png)
{LFSaw.ar(220!2).cubed}.plot;
![](https://assets.st-note.com/img/1654300659837-ZwObdrEUMG.png)
音は少しノイジーになるので、フィルターなどで加工したり、音色の頭だけに使うなど、アイデアを活かして使いたい音色です。
fold2
fold2というメソッドは、波形の頂点(?)を折り返します。
{FSinOsc.ar(220!2).fold2(0.7)}.plot;
![](https://assets.st-note.com/img/1654301038694-NiQyOPEAhP.png)
0.7の部分を変えてみると波形が変わりplayしたときの倍音も違ってきます。
fold2に加えてもう一度fold2するのもOK。また違う倍音が加わります。
{FSinOsc.ar(400).fold2(0.8).fold2(0.5)}.plot;
![](https://assets.st-note.com/img/1654301374256-nKUrtOQBVO.png)
fold2とcubedを組み合わせてもOKです。
{FSinOsc.ar(220!2).fold2(0.8).cubed}.plot;
![](https://assets.st-note.com/img/1654301509791-mcwQhGJCAC.png)
clip
clipはその名の通り音を歪ませます。
{SinOsc.ar(220!2).clip(-0.4, 0.4)}.plot;
![](https://assets.st-note.com/img/1654301715851-LZjAeLheIv.png)
clipの引数(パラメータ)で歪ませ具合を調整できます。
レエゾナンス付きローパスフィルターを通した音にこのclipを使うと気持ちいいです。
abs
absは絶対値にします。なので負の値も正の値に変更されます。
{SinOsc.ar(220!2).abs}.plot;
![](https://assets.st-note.com/img/1654302081469-JTNjz0hNKl.png)
出音は、オクターブ上になって倍音が加わる感じになります。
正の値だけだと出音に違和感がある人や、モジュレータとして使う場合に都合が悪いという人は、振幅の半分を引いてあげるか
{SinOsc.ar(220!2).abs -0.5}.plot;
![](https://assets.st-note.com/img/1654302225954-mHGy8PQCWk.png)
または、LeakDCというクラスを使います。
{LeakDC.ar(SinOsc.ar(220!2).abs)}.plot(0.04);
![](https://assets.st-note.com/img/1654302442762-CFNK2lxbGq.png)
LeakDCはDCオフセットされた波形を調整してくれます。(一瞬時間がかかるので、図のように変化して最終的には中心値が0に落ち着きます。)
squared
最初にcubed(3乗せよ)を紹介しましたが、「2乗せよ」を意味するsquaredというメソッドもあります。
2乗すると、負の値も正になってしまうので、これもゼロより上にしかグラフが生まれません。
サイン波だとあまり出音に変化がないのでノコギリ波で紹介します。
{LFSaw.ar(220!2).squared}.plot;
![](https://assets.st-note.com/img/1654302951702-c1r2sIRpVz.png)
ちょっと甘い感じの気持ちいい倍音、という感じです。
{LeakDC.ar(LFSaw.ar(220!2).squared)}.plot(0.04);
![](https://assets.st-note.com/img/1654303024143-sTjuVoEYIl.png)
round
roundは、X軸のステップ幅を(間引くというか四捨五入するというか)調整できます。
{SinOsc.ar(220!2).round(0.2)}.plot;
![](https://assets.st-note.com/img/1654303240036-C05SsKQvk1.png)
出音はデジタル音という感じの印象になります。0.2の部分を調節することで音色変化します。
まだまだあります。
いかがでしたでしょうか。同じ波形から、いろいろと倍音を生成させる仕組み(メソッド)が用意されています。
これ以外にもこだわりつくせるメソッドがたくさんあります。
https://doc.sccode.org/Overviews/Operators.html
ちょっと難しそうなものもたくさんあり、しかもヘルプのドキュメントが充実してはいないので、出音を確かめながら実験するしかないですが….。
面白いものを発見したら、またここに書き込もうと思います。
今日のまとめ
cubed:3乗する
fold2:折り返す
clip:歪ませる
abs:絶対値にする
LeacDC:DCオフセットを無くす
squared:2乗する
round:四捨五入する
<目次>にも今回のリンクを作っておきます。https://note.com/sc3/n/nb08177c4c01