音楽生成の基礎1: データから音楽を作製するための準備

自動作曲

はじめに

映像による音生成を4回に渡って紹介しました。動画に付けている音楽も作製しているので、この方法についても紹介したいと思いました。データから音楽を作製する技術は、私がインターラクションをするようになった最初期に手掛けたもので、力を入れて検討したのは十年以上前です。音楽に対して映像を合わせるオーーディビジュアライゼーション、映像にBGMを付ける編集ソフト、音素材を組み合わせて音楽を作るDAW(Digital Audio Workstation)、そして好みの音楽を生成する自動生成AI等、非常に発達しました。しかしセンサーやカメラ映像のデータから音楽を生成する分野は、そんなに進展していないように思います。そもそも一般には電波センサーのデータや温度のデータや身体のデータを扱うことが少ないのが原因かと思います。例えば温度を気にしたり、脈拍をスマートウォッチで測定していたりする方は多いかもしれませんが、取得したデータ全体の波形を見て、別の何かに変換しようとする方は少ないと思います。変化するデータであればほとんど音楽にすることができますが、そうしようと思うのはエンジニア的な発想でしょう。エンジニアにとっては、データの変化から装置が動いている様子をイメージするのはに日常的で、その出力が音楽になったという側面があります。これは技術と感覚とを結ぶ分野で今でも興味を持っています。これまでのblogで多くの絵や映像を描いてきましたが、ここに絵画論といったような理論は何も使っていません。使ってないというより、知らないというのが正しいです(絵画の理論を知ると、よりよい映像が作れるかもしれません)。こういうプログラムをすればこういう映像になる、ということで描いてきました。しかし音楽は相当に理論的・規則的です。プログラムにもそれを反映する必要があります。少しは音楽理論を使わないと曲にならないのです。この点映像とは違った魅力があるように思います。また映像との大きな違いとして、映像はパソコンでほとんど完結して作製できますが、音楽はそうではありません。パソコンは音楽を作製するために発展し来たわけではありません。このため後述しますが、音源とオーディオインターフェースが必要になります。今回はデータから音楽を作製する全体イメージと、音源とオーディオインターフェースについて説明致します。音楽理論やMAXによるプログラム自体は次回以降で説明致します。

データを音楽に変換する例

映像に曲を付ける概要

Monogokoroでは映像に音楽を付けています。ディジタルシンセを使う場合と、アナログシンセを使う使う場合、TouchDesignerを使って音を作る場合、MAXで映像から音楽を作る場合があります。MAXで映像から音楽を作製した例も多く紹介してきましたが、最近の例では、「躍動感1:オブジェクトからの視線」の2つの音楽、「梵が一如2」の2つの映像、がその例になります。これらはTouchDesgnerで映像を作製し、MAXの映像キャプチャの機能で映像をMAXに取り込みます。そして映像から音楽を作製しています。今回はこの方法の基礎となる、データから音楽を作る方法の概要を説明します。データから音楽を作る方法には、カメラやセンサからリアルタイムにデータを得て、音楽を作る場合と、すでに測定されたデータがあり、これを読み込んで音楽を作る場合があります。今回はセンサーとパソコンとのインターフェースの話を省略できるように、すでに測定されたデータを読み込んで音楽を作製する場合を述べることにします。センサーからデータをリアルタイムに得る場合は、データを取り込む方法が違うだけで後は同じです。

気温のデータを使った音楽作製の例

変化するデータであれば大抵音楽にすることができますが、その一例として今回は気温のデータを使います。気温のデータは、気象庁のホームページから取得することができます(https://www.data.jma.go.jp/stats/etrn/)。2025年の2月, 7月, 10月の時間毎の気温データから曲を作ってみましょう。データは寒い時期と暑い時期、その中間という意味で選択しました。まず作製した映像と曲を御視聴ください。今回と次回のblogでこれの作製方法を説明します。

気温のデータはCSVファイルで取得できます。CSVは「何月何日の時間, 何度」といったカンマ区切りの形式のデータファイルのことです。多くのソフトはこれを読み込むことができます。TouchDesignerでデータを読み込む部分を以下に示します。

TouchDesignerからMAXへのデータの受け渡し

上の図ではtable DATで読み込み、dat to CHOPを使ってグラフにしています。上から2月,7月, 10月です。各データは1時間毎のデータですので細かく凸凹しています。これは朝昼夜に対応しています。このデータをtrim CHOPを使って順番に取り出し、温度の値を0~127にマッピングします。これはMIDIデータが0~127の値の整数値で音の高さ(ピッチ)を割り当てているからです(例えば中央のドの音(C4)はMIDIの番号では60になります。音のことをノートと言い、60はノート・ナンバーあるいはピッチと言います)。

TouchDesignerがデータの取得と映像作製を担当し、所得したデータをudp通信でMAXに送信し、MAXで音楽を作製しています。プログラム間を通信でやり取りするというのは、行ったことのない方には以外に感じるかもしれません。同じパソコン内に入っているソフトなのに、そんなことが必要なの、という感じです。大変残念なことですが、各ソフト間でデータの直接のやり取りは通常できません。そこでソフト間で通信を使ってデータのやり取りをします。通信の方法も複数ありますが、udp通信(手段)が非常に簡単です。OSCというプロトコル(通信規則)を使います(udp通信が通信するのはただのバイト列です。そのバイト列がどういう順番でデータ(アドレスと引数のこと)が書いてあるのかは、送る側と受ける側で決めます。その規格にOSCという規格を使うということです)。多くのソフトでは標準に装備されていて、通信について詳しく知らなくても使えます。その部分を次に示します。

ToucDesigner側では最初図の3つのデータと、それらのデータを足して、その値を50~127の整数にマッピングした値の4つをまとめ、osc out CHOPに繋ぎデータを送信します。4つ目のデータは音の強さを表すベロシティに使います。osc out CHOPの設定は、同じパソコン内で通信する場合は、Network Adressにlocalhost, Network Portに1024~65535の任意の値を設定します。Networl Portの番号が通信をするための番号です。図では7405としています。
次にudp通信をMAX側で受ける部分を説明します。次の図を見てください。

[uppreceive 7405]と書いています。7405というのがTouchDesigner側で記載したNetwork Adressの番号です。これだけて通信できます。次の[OSC-rout /chan1・・・]というのがOSCのプロトコルで信号を分ける命令です。最初が1月, 2月, 3月のデータが入ってきます。4番目はベロシティのデータが入ってきます。

パソコンで音楽を作製するための構成

MAX側でudp通信で得たデータを楽器に割り当てて音を鳴らします。例えば3種類のデータを得て、それぞれをピアノ、ギター、ベースに割り当て、テンポを合わせて音を出します。しかし単にテンポを合わせて鳴らしたのでは曲に全く聞こえません。曲のように聞こえるためには音楽理論が必要になります。次回に音楽理論を簡単に紹介しますが、各楽器はスケールを合わす必要があります。スケールとは音階のことで、CメジャースケールとかAマイナースケール等といったりするモノです。感情や意図を込めるというようなことを度外視して、曲らしく感じさせるには、各楽器を同じスケールの音で奏でると曲っぽくなります。スケールの替わりにコード(CメジャーコートやAマイナーコード等といったりする和音です)を使い、コードを変えていくことをコード進行といいます。コード進行を使うと更に曲らしく聞こえます。このように少し音楽の知識が必要となります。ですので、得たデータをプログラムによってスケールにあったデータに変換する必要があります。これが音の高さピッチ(ノート・ナンバー)になります。ピッチの他にも、音量(ベロシティ)が必要になります。これはTouchDesigner側から受け取っています。また鍵盤を叩いた時音がなる時間があります。これをデュレーションといいます。その他にも音色(ピアノやギターやベースといった楽器に相当します)、ピッチを連続的に変化させるビッチベンド、左右のスピーカのどのあたりから音をならすかを表すパン、があります。ピッチを初めとするこれらの情報がMIDIデータの内容です。MIDI(Musical Instruments Digital Interface)は古くからある音楽情報の規格です。例えばピッチに60という値なら、それはピアノの鍵盤中央のドの音、261.6Hzのことです。ベロシティは音量ですが、正確には鍵盤を押す速さです。鍵盤には通常2つのセンサーがあります。Aセンサ―とBセンサーとすると、鍵盤を押すとAがオンとなり続いてBがオンとなります、この時間差を測り、それを0~127にマッピングしています。この速度はメーカーにより違います。細かくいうと同じ名前の楽器でも違うでしょう。ここが如何にも音楽が感性のモノであることを表しています。速度がいくらいくらの時80とする。というようになっていません。そして実際にそのような規格は当時できなかったのでしょう。相対的ですが、ベロシティ80とすると、その強さの音が奏でることになります(音量であるのにベロシティすなわち速度と訳せる言葉を使うのは、ここで示したように時間差から来ています)。さてここで注意点があります。あくまでMIDIは述べてきたように番号です。音そのものではありません。音そのものと言っているのは、音声あるいは楽器の音、何かの音のことです。見える形でいうなら音の波形のことです。ですから音にするにはMIDIのデータから音を作る必要があります。この役割を担うのがMIDI音源です。MIDIシンセサイザーとも言います。MIDI音源にはソフトウエアのMIDI音源とハードウエアのMIDI音源があります。この言葉自体が誤解を生む言葉です。ソフトウエアのMIDI音源もハードウエアのMIDI音源もPCM(Pulse Code Modulation)で録音された音を持っています。PCMはアナログ信号である音をディジタル化する技術です。この音源をMIDI信号に従って再生します。つまり、ピアノのドの音、ギターのドの音、というような音がディジタルとして記録されており、トーンナンバー60番をベロシティ80でピアノの音で鳴らしなさい、というMIDIの要求に対して、ピアノの録音した60のドの音を80のペロシティで再生する仕組みです。するとスピーカーからドーと鳴ることになりますが、ドーという音を加工して音を鳴らしています。この加工する機能を担うのがDSP(Digital Signak Processor)です。具体的にDSPでしていることは、ADSR(エンベロープ処理:エンベロープについては先先回の説明を見てください)、フィルタ(ローパス、バンドパス、ハイパス)、エフェクト(リバーブ、コーラス、フェーザー)等です。これらを経た音が再生されます。これらはソフトウエアMIDI音源もハードウエアMIDI音源も同じです。windowsにはソフトウエアMIDI音源として、Microssoft GS wavetable synthが標準装備されていますが、これは古いものでシステム音を出すにはいいですが、音楽を作るには全く不向きです。音が悪いのです。実際問題として音楽を作る場合、ソフトウエアMIDI音源かハードウエアMIDI音源を購入して使うことになります。ソフトウエアMIDI音源はDSPの機能はパソコンのCPUが担います。ハードウエアMIDI音源は外部の専用DSPが担います。この違いがソフトとハードの違いです。ソフトミディ音源はパソコン内のソフトウエアとして動くので、パソコンの画面で操作が細かくできるようになっています。また種類も豊富です。恐らくソフトウエアMIDI音源という言葉は、このパソコン画面の操作性にあると思います。音楽は映像のように並列処理ができません。またGPUの処理でもなく、CPUの処理です。このため音楽作製にはCPUのシングルコアの性能が重要になります。この後オーディオインターフェース部分でD/A変換してスピーカーに出力するのですが、パソコンの内部で完結するソフトウエアMIDI音源の場合、この音源とD/A変換の間に、オーディオにとってはとんでもない操作が入ります。これはパソコンがオーディオ用に開発されていないためです。Windowsはマルチタスクですので音もまたマルチタスクです。例えばオーディオと同時にYoutube, ゲーム. システム音等、様々な音を扱います。これらを全部ミキシングして音にします。これらはそれぞれサンプリングレートが違いそのままでは混ぜれません。このため変換が入り合成することになります。こうしたことで音が途切れたりしないために、大きなバッファを用意しています。これがオーディオにとっては致命的なレイテンシを生じさせます。レイテンシは遅延時間のことです。リアルタイム性といってもいいと思います。レイテンシが小さいとリアルタイム性が高いということです。人間は映像の遅延には鈍感ですが、音の遅延に敏感です。5ms以下程度にする必要があります。このために必要なのがASIO(Audio Stream Input Output)ドライバーです。次の表現が完全に正確かどうかはありますが、これはパソコンのマルチタスクの音声処理の部分を飛ばしバッファを小さくしてオーディオ専用にするためのドライバーです。これを使うことによってレイテンシの問題を解決します。しかしこれまた、WindowsにはASIOドライバはついていません。このためオーディオインターフェースを購入することになります。外部のオーディオインターフェースはASIOは標準装備されています。勿論オーディオインターフェースを使うメリットはASIOだけではりません。値段にもよると思いますが、パソコンより優れたA/D変換、D/A変換、また低ノイズ、広いダイナミックレンジのアンプ等、高性能なアナログ信号処理を備えています。一方ハードウエアのMIDI音源はパソコンからMIDI信号を送ると、外部にあるPCM録音データとDSP処理して出力するので、パソコンの音に関するマルチタスクに対応するミキサーやパッファはそもそも関係ありません。このためASIOも必要ありません。ただ現実をいうと、パソコンではMIDIで音楽を作るだけでなく、パソコンで音を生成してDSPで加工して音を出力することもあります(「映像による音生成」のblogは全てこの場合にあたります)。これにはASIOは必要になります。結局。ハードウエアMIDI音源を使っても、パソコンから直接音も作製する場合もあるので、現実的にはオーディオインターフェースは必要になります。このとき、ハードウエアMIDI音源の出力はオーディオインターフェースに繋いておきます。こうすればMIDIを使った音楽と、パソコンで扱った音とを合成することができます。これは便利です。
パソコンは汎用機ですので、音楽を作るには不向きな点があります。それは音源とオーディオインタフェースでカバーすることになります。最初、録音した音がパソコンでもある程度綺麗に再生できるのに、パソコンだけを使ってMIDIで曲を作ると、何だこの音は、となるのは、皆が経験していることだと思います。これは録音した音は完成品で、作っている音はリアルタイム性が必要だからです(Microssoft GS wavetable synthが古すぎるというのもあります)。録音した音は再生時に計算する必要がありません。大きなバッファーにためて出力したので問題ありません。最初の出だしに遅延が生じますが、人はそれに気づきません。音源を使って作製する場合は、MIDIの命令が来た瞬間に音がでないと(つまりレイテンシが小さい)、演奏になりません。このように音楽の生成にはリアルタイム性が重要です。このため音源とオーディオインターフェースを使います。印象としては映像が非常に発達したので、音楽ぐらい作れるだろう、という感じがあると思いますが、リアルタイム性の観点からは音楽作製のほうがハードウエアに対してシビアです。

Monogokoroのオーディオシステム

私が使っているオーディオシステムは趣味で10年ほどかけて、こつこつ構築してきたもので、今回話したMIDIで曲を作ることもは勿論、アナログシンセやディジタルシンセも使えます。またそれらを同期させる機能も付けています。今回は全体ではなく、上述したMIDIで曲を作るところを述べたいと思います。まずMIDI音源ですが、ハードウエアMIDI音源のRoland Sonic Cellを使っています。ソフトMIDI音源を買うか、ハードMIDI音源を買うかは迷うところです。主流はソフトMIDI音源です。私の場合は映像も作るし信号処理もするので、CPUはできるだけそちらに使おうと思ったことが理由ですが、私は元々ハードウエアのエンジニアですので、パソコンの操作よりもハードウエアのボタンを押したりダイヤルを回したりするのが好きです。これが大きいと思います。このblogを書くにあたりsonic cellを調べてみると、2022年9月製造中止になり、後継機種もありません。おそらくハードウエアのMIDI音源は少数派ではないかと思います。パソコンとハードのMIDI音源をつなぐにはパソコンのUSBからMIDIに変換するUSB-MIDIインターフェースも必要になります。オーディオインターフェースはRoland Octacaptureを使っています。入力ポートが多く使いやすいインターフェースです。Sonic cellの出力をOcatacaptureの入力に入れています。Octacaptureの他のポートには、他のシンセの出力を入れ、Mixerとして使っています。MIDIを使わない音を作る場合は、Sonic-Cellは介しておりません。Octa-captureを介してスピーカを鳴らしています。この場合、TouchDesignerではaudio device in CHOPのパラメータのDriverにASIO, DeviceにOCTA-CAPTUREを設定します。これによりASIOが使えます。MAXの場合ではAudio Statusの設定のDriverにad_asio OCT-CAPTUREを選択することで、ASIOが使えるようになります。残念ながらOCTA-CAPTUREも2023年10月に生産中止になっています。しかし後継機としてUA-1010シリーズがあるようです。私が持っている装置にアナログシンセとしてDark energy2とKORG-SQ1というシーケンサがあります。どちらも古い古い装置です。私も装置も古くなってしまいました。

まとめ

データから音楽を作るための準備ということで、ソフト間の通信の方法、 ソフトMIDI音源とハードMIDI音源の違い、オーディオインターフェースの機能、特にASIOについて説明しました。リアルタイムに音楽を作製することは、このリアルタイム性故に、低レイテンシを実現するための対策が必要でした。映像作製はパソコンにソフトをイントロールすれば直ぐにとりかかれますが、音楽の作製には今回紹介した周辺技術との関係を知っている必要があります。私は周辺環境を測定したデータから音楽を作製したり音を作製したりすることを行っています。これは周囲環境のデータを感覚化する方法の一つと思っています。私はフィジカル・インテリジェンスにも関心を持っております(2025.10.20のblog「フィジカル・インテリジェンス」)。周囲環境の感覚化と言う意味で、フィジカル・インテリジェンスにつながる技術としても位置付けています。

コメント