投稿者: Kei

 

Behind The Piano 01

長年構想を練りつつも、なかなか実現できない作品があります。
楽器の王様ピアノへの憧れから、ピアノのような豊富な表現力をもつ音楽にドラムセットの表現力で同様の情報量の音楽を作れないだろうかというものです。88鍵盤/10本の指に対して、8個前後の太鼓・シンバル/4つの手足で奏でるハンデとして、アルゴリズム作曲の手法を使うことを前提とします。
Roland のエレクトリックドラムTD-7を発売時に購入したときに、いろいろと実験したことがありますが、MIDIの遅延が気になったり、音楽理論をMIDIプログラミングに落としこむところに時間がかかり、なかなかつかえるものに発展できませんでした。

しかしこのままではいつまでたってもできないということで、音楽に対してとてもポジティブでいられる今、まずはファーストステップとしてとりあえず形にしてみることにしました。
Mac Book Proにプログラミング環境はMAX、MIDIインターフェイスはUSB、エレドラは TD-7を使います。TD-7がまだ現役で使えることがとても嬉しいです。(MIDIの遅延は気になりますが、もっと制作がすすむころには機材のアップグレードで解消するでしょう)
ピアノ音源はソフトシンセやDTM音源以外にしたかったので、シンセのプリセットにしました。

ピアノ曲もどきに聴こえるでしょうか。

本来は音だけで評価されるべきものと思っていますが、ブログで公開する性格上「これではなんのことかわからない」ということになりますので、記録用として撮った動画もアップしました(遅延補正のため音声トラックを少し前にづらしています。また生音がないと叩いているリアリティがないので、少しミックスしています)

私の(?)髪の毛で、左側がみえなくなってしまいましたm(_ _)m 最近JoJo Mayerが好きなので・・(ここはH太郎ではないっ/)
あと画面上にはクラッシュシンバルに見立てたパッドが見切れています。
簡単に説明ですが、セットとしてはシンバル2、スネア、タム3点セットを想定しています。ライドとハイハットは高音パート、クラッシュは音を重ね、フットハイハットはリリースタイムをコントロールしています。

今回はアルゴリズムがシンブルだったので、より高度にするために次回のプログラム言語はCかなと思っています。

Sonic Pi

ライブコーディングという音楽を再生しながら、リアルタイムでそのプログラムを更新できる環境の一つにSonic Piというものがあります。

https://sonic-pi.net/

以前音楽データのアプリケーション間通信のテストでも取り上げたときがありましたが、プログラマとしてもコンポーサとしてもとても興味深い題材になります。

Max OSC

プログラムというのは基本的に動作中は変更しませんが、この環境ではこれを実現できます。(一部Erlangのようなホットコードローディングまたはホットコードスワッピングというものはありますが・・) またDJのようなプレイをモニタを見ながらキーボードでやるスタイルも新しく感じます。コーディング画面をVJの素材としてみせるものもあります。
以下のような言語とグラフィックもよく使われます。

GLSL Sandbox

このSonic Pi特徴は、前回とりあげたSuper Colliderを内部で使っています。言語は少ないコーディング量で記述できると定評があるRubyです。エディタもキーワードが色わけされており見やすくなっています。プリセット音源を持っているのでシーケンスデータだけですぐに鳴らすことができます。

まずは、プロフェット5が好きなのでこの音色二つとブレイクビーツで曲を作ってみました。
サンプルが豊富なので、そこから膨らますことができます。

コードトーンからランダムに選択した音にフィルタとパンもランダムでちらしました。
真ん中あたりで、コードとリズムのスライスを変更しています。

結構いい音で楽しめます。

Rubyを知らなくても意味がわかりやすいのでコーディングできそうですが、リスト処理などを知っておくと便利だと思います。

もともとRaspberryPiにプリインストールされているもので、以前テストしたもののリンクはっておきます。

Sonic Pi サウンドプログラム

Super Collider

音楽を作るというと、多くは楽器などの音源があってそれを演奏したりシーケンサで鳴らしたりというところから始まりますが、その音源も作ってしまうというツールにSuperColliderというものがあります。
音響合成もシーケンスもキャラクタベースのブログラム言語で記述します。
今回は、以前別のプログで作ったものを基本にパートを加え、より音楽的になるように工夫してみました。
(このとき音楽専用のプログを作ってみたいと思い、このブログのきっかけの一つとなりました)

Super Collider


やっていることですが、p1がメロディ、p2がベースパートで、メロディは確率によって音を選んでいます。ペンタトニックスケールの出現率を高くし、ルートと五度は三度の音でハモらせています。
ベースはグルーブを出すために音量をランダムに変えています。
今回は音源についてはシンプルはサイン波ですが、もっとシーケンスで積極的に変化させるものもやってみたいと思っています。(p1のリリースは長め、p2は短め)

Random Music

現代音楽の世界で、バルトークの黄金分割比、ベルクの総音程音列など音を数学などのルールに基づいて選ぶ作曲方法などがあります。(柴田南雄氏「音楽の理解」音楽と数理の章参照)
コンピュータの発達とともにプログラムで音楽を制御することが、専門家でなくても家庭で簡単に実行できるようになり、私もプログラミングでいろいろと試しました。(音楽はプログラムが上達するための題材が豊富です。アルゴリズムコンポジション的なものを除いても、MIDIシーケンサ、音響合成などをC言語で作ると通信、並列処理、ビット操作など一通りのスキルが身につくと思っています。)
当時一番最初にやったのはNEC PC6001のBASIC言語をつかったランダムミュージックでした。音楽に対する考え方がガラッとかわったのを記憶しています。音楽理論に興味をもつようになったり、変拍子の音楽に目覚めたのもこのころです。(コンピュータでガイドラインとなるフレーズを鳴らしてそれ合わせてドラムを叩いたりか・・)
しかしこのランダムというのがとても深いこと気付きました。ランダムをどのように作るかとか、どの程度ランダムにするとか。確率を使うと毎回違ったものになりますが、決定論的につくれば初期値によってバリエーションをコントロールできます。
このあたりのテストは以下プログで。

1/f Noise

Logistic Map

また使う音の数(5音、7音、12音)によって音楽の調性との関係もかわってきます。音程を全てばらばらにすることによって無調とする総音程音列は3856個あり計算で求められます。これを計算できるアプリを以前作ったこともあります。(自分が欲しいアプリを作るのが当時のポリシー(^^;))

この例はC-E-D-Fとキーを押して、それに続く総音程音列を検索します。+ / – キーで次の候補を検索します。

また視覚的な動きと音が連動して奏でるランダムな音はどのように感じるだろうと、音楽ゲームの一つのモードとして試したものもあります。(バウンド角度に乱数を少しかけているのでランダムになる。かけないと周期的。このアプリのアイコンをいろいろなところで使っています。)

音楽と数学の関係を追求していくと、発想がひろがりとても面白いです。今後もいろいろと試していきたいです。

最後にこの機会にIchigoJam BASICでちょっと作ってみました。(MSXでやりたかったのですが、ちょっとしまいこんでて・・)
圧電ブザーなのでかなりチープです。音域がだんだと広がります。

Cellular Automaton


格子状のセルを単純なルールで状態を更新することにより全体のパターンを観察するモデルで、自然現象や生命体のシミュレーションができるほど複雑な動きをさせることができます。2次元の代表的な例がライフゲームです。これを音楽に応用したらどうだろうと試みたWindowStoreアプリが上の”bitlife”になります。久しぶりに動かしてみようと思ったら動作しなかったので(Windows10)、開発していたPC(Windows8)を引っ張り出し立ち上げようとしたらストアから削除されている関係で本体からも消去されてしまいました。VisualStudioを立ち上げてビルドしようとしましたが環境が変わっていてエラー。ということで下記ページの資料しかない状態になってしまいました。

http://crossframe.iiv.jp/apps/

画面上部の白黒が鍵盤に相当して、セルの色がLightBlueのセルの音がなるしくみになっています。ライフゲームは通常色はついていませんが、全てのセルを対象にすると多すぎるので、消滅して復活したセルのみを対象にしています。16行は上から順に走査して対象のLightBlueのセルがある音を走査のタイミングでピアノ音を発音します。

セル・オートマトンについては以下も参照ください。

Cellular Automaton

Windows Store アプリはもう一つ”Clocklavier”というかなりチャレンジングなものもつくりました。
これは時刻を時計を見なくてもメロディを聞くだけで確認できるものです。といってもメロディのルールを熟知する必要があり、現実的ではありません。アンビエント的な環境音楽で時刻を知ることができたらという発想から作りました。

これは立ち上がったので、とりあえず動画に記録しました。

メロディの仕様

セル・オートマトンの音楽への適用はとても可能性を感じています。前回の投稿のマトリックス・シーケンサとの組み合わせで面白いものを生み出せそうです。

Matrix Sequencer

マトリックスタイプのシーケンサは、お絵かき感覚で曲を作ることができるためアプリなどでよく見かけます。でたらめに作ってもそれっぽくまとまって聴ける魅力があります。私もiPhoneアプリ”Tropf Musik.electronica”で同様のものをつくりました。特徴はシーケンスの進行方向が縦・横・斜めと逆行含めて8方向iPhoneを傾けることでリアルタイムに切り替えられることです。
音はCmajor, Cminorスケール(切り替え可能、逆行も)のFからGの16音で、音色も切り替えられます。
http://iphone.iiv.jp/sound/index/L0020
以下当時のデモムービーです。

マトリックスシーケンサの曲は、アプリを操作しながらでなくても(音のみでも)聴くことができるだろうか、ということで作ってた曲をアップしてみました。

観賞用とするには、もっと計画的に作らないとだめかもしれませんね。

作曲のヒントになったり、まだまだいろんな可能性を秘めているタイプのシーケンサだと思います。

Algorithmic Composition

アルゴリズムで曲づくりをするときの代表的なツールといえば、MAXです。まずはこのサウンドプログラミング環境を使った実験を紹介したいと思います。

入力ソースには自作ライブコーディングiPadアプリケーション”M^2″を使っています。
M^2はもともとiPhoneアプリケーションがオリジナルですが、iPad版はOSCが利用可能になっており、WiFi経由で通信できます。このデモはM^2のランダム音階の出力をOSC送信してMAXプログラムで受信しています。MAXプログラムのねらいは、音列に対してハーモニーとリズムを付加して、入力ソースの性質による音楽の変化を表現しようとしました。

このときのMAXデータがあったので、OSCでなく単純なランダム音列を入力にしたものを実行して録音してみました。

右上のスライダーでランダム値を徐々に変化させています。

このようにできるだけ聴けるものを公開するため、SoundCloudを利用していくつもりです。

以下、参考までにM^2の動画です。