Wednesday, May 21, 2014

第6回アルゴリズムでシーケンスを作る

今回はアルゴリズムを作って旋律を作る方法の一例を紹介します。
アルゴリズムとは、もともとは数学やコンピュータの用語で、

「問題を解決するための方法や手順」

という意味です。
音楽の場合、アルゴリズムは解決法というよりはメロディやリズムを作り出すための一定の法則を指すケースがほとんどです。
作曲者が考えてその法則を設定し、それに沿って音楽が生成されるのがアルゴリズムコンポジション(作曲)です。
すべてのフレーズを自動的に生成する、少しだけ作曲者のお手伝いするなど、アルゴリズムを使った作曲、音楽はこれまで様々なものがあります。
プログラミング環境であるPdは、この考えたアルゴリズムを実装するのに向いていると言えるでしょう。

以下の授業パッチをダウンロードして解凍してください。

pd_lesson06.zip

解凍するとフォルダの中に以下のAbstractionやパッチが入っています。

パッチ

  • pd_lesson06_algorithm1.pd
  • pd_lesson06_algorithm2.pd
  • pd_lesson06_algorithm3.pd

Abstraction
  • adsr_vol.pd
  • osc_adsr_unit.pd


Abstractionであるosc_adsr_unit.pdの中では、Abstractionのadsr_vol.pdを使っています。つまり、入れ子状にAbstractionが呼び出されています。この2つのAbstractionでマリンバのような音をサイン波で作っています。

アルゴリズムのネタ

ゼロから作曲の法則を考えだすのはとても大変です。
そこで今回は素数をネタにして、音列を作る法則(アルゴリズム)を組み立ててみました。
素数とは、その数字自身と1以外では割り切れない数字のことです。

pd_lesson06_algorithm1.pdを開いてください。
これは素数を1〜16個ずつセットにして12(1オクターブの音程数)で割り算した余りを、ベースノート:60, C3に加算し、音のピッチに割り当てています。
指定した数ごとの1セットとした、何セット目から読み出すという指定ができます。

しかし、これだけだと音列を構成するピッチの数値は、(1, 5, 7, 11)だけに限定されてしまいます。

アルゴリズムの発展

pd_lesson06_algorithm2.pdを開いてください。

これは素数表の好きな場所から連続した数値のセットの数値をとびとびに読み出すことができます。
しかし、まだ使われる音のピッチは(1, 5, 7, 11)に限られています。

さらにアルゴリズムを改良する

pd_lesson06_algorithm3.pdを開いてください。

これは2個以上の数値のセットにおいて、2番目の数値から1番目の数値を引き算して音のピッチに割り当てたものです。

これで出現する音列にだいぶバリエーションが出てきました。

チャレンジ

このパッチのアルゴリズムを改良してみましょう。
例えば、セットの3番目から2番目を引き算した数値に対して1番目の数値を割り算したり、何回かくり返した後に違う音のパターンを自動的に生成したりなど、いろいろな発展性が考えられます。
音をリズムのサンプル音にしてみるのも面白いでしょう。

チャレンジ

出てきた数値を音列に割り当てていますが、音と音の間隔に割り当ててリズムを作るパッチにしてみると面白いかもしれません。

No comments:

Post a Comment