作品系コンテンツのための自動作曲システムに向けて(2)(3)

長嶋洋一 (SUAC/ASL)

1. はじめに

エンタティンメントやメディア心理学の関連として、Webコンテンツの一つであるFLASHと音楽にまたがる領域を対象とし、「誰でも手軽に作品系FLASHコンテンツの音楽パートを自動生成するシステム」の開発研究を進めている[1-2]。本研究のシステム開発は2005年前期IPA「未踏ソフトウェア創造事業」にも採択された。

本研究の目標は短期的にはクリエイター(とその卵)のためのシステムであるが、3年後には到来する「クリエイション(作品創造)の大衆化」という時代的要請を視野に入れている。一般大衆がマルチメディア作品系コンテンツを「自分で作る」というエンタテインメントの時代に問題となる音楽パートの創作を、著作権の問題をクリアし、音楽的な専門知識を要求することなく、容易にコンテンツに適した「使える」音楽を自動生成するシステムを目指している。

2. FMC3 (Free Music Clip for Creative Common)

2-1. 作品系FLASHの音楽の特徴

本研究は「あらゆる音楽をなんでも自動作曲する」などという無謀な野望は抱いていない。市販の高機能シーケンスソフトやマニアックな自動作曲ソフトでは、あれも出来るこれも出来る、と「どのような音楽スタイルでも作曲できる」万能性・網羅性を指向することで、ある目的を持つ専門的でないユーザの希望から乖離している。

ここで対象と考えている、ショートムービーやフラッシュ作品のためのサウンドトラックとしては、

	・全体/部分の時間的長さ(「尺」を固定)
	・イントロ、エンディング
	・リピート、ループ、ブレイク
	・ブリッジ、フェード
などの音楽的要素・音楽構造に独特の傾向と要請がある。また、より高度なマルチメディアコンテンツ作品の創作において、グラフィクスのパートと音楽のパートとの同期は非常に重要な要素である。ここでは、
	・サウンドのある部分だけを時間的に伸縮
	・没入感/躍動感/幻惑感/浮遊感などの演出
		- 映像と音楽のビートを微調整
		- 「ノリ」「タメ」「グルーブ」
などの操作を駆使して演出効果を盛り込むことを指向するが、これは"GarageBand"のようなサウンドファイル形式のシステムでは困難である。

2-2. システム開発研究の基本戦略

以上の分析検討を受け、本研究では、「使えない」部分の課題[1-2]に対して、基本的に以下のような戦略を検討・構想・実験して、「使える音楽データ」としての解決を目指した。

戦略1

自動生成アルゴリズムを採用し、本質的に既存の楽曲情報を一切利用しない。これと同時に、生成された楽曲の特徴情報を圧縮して生成データの中に埋め込み(図1)、容易にインターネット検索できるシステムとする。この手法を活用すると、既存の楽曲の特徴情報を同様にデータベース化することにより、本システムで生成された楽曲が既存の楽曲と天文学的確率で偶然に一致する、という偶発事故的な著作権侵害を未然にチェックする可能性を提供できる。


Fig.1 生成されたSMFデータ中に埋め込まれたパラメータ

戦略2

音楽データのアルゴリズム作曲自動生成は、基本的にMIDI情報ベースで行う。これは上記の「作品系コンテンツ創作における特徴」に対応するためである。その出力は、ユーザが好みの音源システムで音響データに変換し、さらにFLASH化のためMP3データ化するシステムと統合する。アルゴリズムに乱数(不確定)要素を持込む度合いについては、自動作曲の確率統計アルゴリズム中でユーザが選択できるようにする。

戦略3

対象を「作品系マルチメディアコンテンツの音楽パート」と限定した自動作曲コンテンツにおいて、本質的に音楽パートは「唯一の主役」ではない。これは、ダンス系のDJ/VJの音楽や演劇/ミュージカルの音楽と共通する特性であり、イメージを一言で例示すれば「Drum'n Bass」である。この音楽は、ビジュアルあるいはダンサブルな主役のメディアとともに、コンテンツの聴取者に快適な音楽を提供して没入感その他の演出効果を上げるが、骨格部分において、古典的な音楽の要素から、メロディー・和声・(リズム)を捨象している。

戦略4

楽曲であるからその誕生とともに音楽著作権が生まれるが、コンピュータのアルゴリズムによりいくらでも自動生成される多数の楽曲、それもメロディーらしいメロディーすら無いミュージッククリップに著作権があるのか、という社会学的な問題提起をあわせて検討する。基本的姿勢は「フリー音楽クリップ」(コピー自由、改編自由、配布自由。制作者クレジットを希望し、無断販売のみ禁止)とする(後述)。

2-3. 対象プラットフォーム

本システムが開発対象とするプラットフォームは、Macintosh(OSX)およびWindowsXPである。システムの基幹部分は両環境に共通したMax/MSPで開発し、関連したツール類をXcodeなどのツール(C++)で開発して連携させる。最終的な公開段階では、Max/MSPのソース(パッチ)まで全て公開する計画であるが、ユーザの手元に自動生成システムを分散させるのか、Webと連携したサーバ側に置いたシステムで自動生成するのか、という方針はまだ未確定である。

計算型(ノンリアルタイム)のアルゴリズム作曲システムの場合、コンピュータの能力により音楽データの生成時間の短縮は可能であるが、本システムではリアルタイム生成ということで、例えば90秒の音楽クリップを生成するためには必ず90秒以上が必要となる。多数の背景音楽素材を提供したい本システムにとって本質的なこの欠点については、「バッチにより多数のサンプルを自動生成・蓄積するシステム」を構築・稼動することで対応する。

2-4 . ネーミング「FMC3」(クリエイターのためのフリー音楽素材)

音楽情報科学研究の領域に限定した話ではないが、新しいシステムの開発研究において重要なものの一つがネーミングである、と筆者は考えている。何度となく繰返し接することで、そのコンセプトが骨の髄まで染み込んで、開発研究そのものの推進力となる事を期待しつつ、本システムの名称を「FMC3」(Free Music Clip for Creative Common : クリエイターのためのフリー音楽素材、発音は「エフ・エム・シーキューブ」)と決めた。ここでは、以下の2点をポイントとして明確にしておきたい。

FMC3のポイント1

本システムが生成するMP3(音響)、あるいはこれに対応するSMFデータは、あくまで音楽素材であって、音楽作品ではない。音楽著作権を主張しない"Music Clip"であって、人間等が作曲した音楽作品"Musical Piece"ではない、というのが基本方針である。従って、本システムを用いて制作した音楽クリップは誰でも自由に使用・改編できる。ただし、FMC3を元にさらにシーケンスソフト等を用いて改編(アレンジ)したものを「FMC3起源」というクレジット無しに自分の完全な著作物として宣言することは、著作権の考え方から見ると道義的に正しいことではない。出展のクレジットを添えればまったく問題ない、という立場である。

FMC3のポイント2

フリーである。本システムでは、図1のように生成パラメータをSMFデータ内に埋め込んでいるが、利用・改編・配布は全てフリーというのが基本姿勢である。自由にFLASHなどに積極的に活用して欲しいので、利用したい作家に余計な手間は求めない。なお、2004年頃から世界的に採用され始めた"Creative Commons"[3]とは、基本的に無関係である。筆者は"Creative Commons"の活動についてはおおいに共感・協賛できるが、本研究については、成果物が楽曲でなく音楽素材である、という点から、正式にCCの枠組みに乗ることは敢えて避けている。FMC3の直訳は「創造的な共同体のためのフリー音楽クリップ」という事であり、名称の一部が似ているとすれば偶然である。

3. FMC3生成と動作の詳細

3-1. FMC3生成の基本フロー

FMC3生成のための本システムの基本フローは、図2のスクリーンショット中の上部のメイン画面(試作段階)によって容易に理解できる。図の下段にある2つのウインドウは上級者・開発者のための「隠しウインドウ」であり、最終的には一般ユーザは開くことができない仕様とする可能性も検討している。現状(試作中)のFMC3生成システムのメイン画面にあるのはたった3つのステップであり、
	・第1ステップ - スタイルをランダムに選ぶボタンを押す
	・第2ステップ - 音楽クリップの「尺」(イントロ/エンディングの有無)を選択
	・第3ステップ - 「Compose」ボタンを押すと1-2秒でパラメータ生成(自動作曲)
というだけである。当然ながら、オペレーションに音楽的知識は要求されない。これで生成された音楽クリップはその場でリアルタイム演奏され、希望すれば「SAVE」ボタンにより、ファイル名を付けた標準MIDIファイル(********.MID)として保存できる。


Fig.2 試作中のFMC3のメイン画面(上)とオプション画面(下)

3-2. FMC3生成の第1/第2ステップ

まず最初に第1ステップでユーザが設定するボタンをクリックすると、スタイルが36種類の中からランダムに選ばれる。この36種類の内訳は、さらに3種類のブロックに分かれており、
	・8beat (1小節を8分音符8個に分割)
	・shuffle (1小節を3連符12個に分割)
	・16beat (1小節を16分音符16個に分割)
というようにリズム/ビートの基本単位が選択される。この3種類ごとにそれぞれ12段階の「ベースラインの音候補」が配備されている。ベースラインの音候補とは、もっとも単純なものはコードのルート音(オクターブ違い)だけ、ルートと5度音、・・・、多くのテンションノーツを含むスケール、全音音階Whole Tone Scale、などで構成されている。この「スタイル」、すなわち3種のリズム/ビートと12種のベース音候補、という36通りのパラメータは、後述する生成パラメータのうちの第7パラメータとして1文字にエンコードされる。

これに続く第2ステップでは、音楽クリップ全体の基本となる「尺」と、イントロ/エンディングの有無を選択する。対象が本格的な音楽作品でないために、基本的にはミニマルミュージックのように同じパターンを繰り返す、というコンテンツの特性に対応し、その一方で、全体の長さだけはアバウトに指定できるようになっている。具体的には、

	・イントロ(長・短・無)
	・エンディング(有無)
	・30秒から180秒まで6段階の「尺」
として指定する。3*2*6=36通りのこのパラメータは、後述する生成パラメータのうちの第9パラメータとして1文字にエンコードされる。

FLASH作家の大部分が音楽のイントロやエンディングはクレジットやローダと重複させる事から、「尺」はイントロとエンディングを含まない本体部分である。「尺」と「テンポ」の指定により、切り上げた2小節単位での演奏所要時間(duration)が決定され、その前後にイントロとエンディングが付加される。FMC3の特性から、テンポは曲ごとに設定され、その演奏中のテンポは一定である。図3は、システムクロックを生成するブロックのパッチであり、ドラムやベースのタイミングクロック、イントロ、エンディング、アルペジオパート、コード(バッキング)パートなどのタイミング信号、1小節単位でのコード進行のチェンジ、4小節単位での基調移動(転調)のタイミングなどを生成している。


Fig.3 FMC3のシステムクロック生成パッチ

基本的にはこの2ステップで自動作曲に進めるが、第1ステップのボタンでは同時に、4/4のメトロノーム速度で50から200程度の範囲に分布する36段階の値の一つとして、第10パラメータの1文字にエンコードされる。このテンポは画面内にかなりアバウトに「slow-middle-fast」と指定されたスライダー範囲によって表示されており、希望すればこのスライダーを操作することで、後からテンポ・パラメータを設定変更して、自動作曲ステップに進むこともできる。

さらに第1ステップのボタンでは同時に、各パートごとの楽器音色もランダムに選択して、第12-第15パラメータの1文字にエンコードされる。この楽器音色名も画面内に表示されており、希望すればアップダウンボタンを操作することで、音色を設定変更して自動作曲ステップに進んだり、音色やテンポを変更して「再度演奏」(パラメータ再設定)に進むこともできる。

市販の自動作曲ソフトウェアであれば、ここからコード、キー、伴奏パターン、リズムパターン、あるいは実際のフレーズの一つ一つの音情報などを「打ち込む」ことになる。しかし本システムではここでユーザの入力は終了して、あとは第3ステップの「作曲スタート」のボタンしかない。これをクリックすると、もうSMFデータ、対応したMP3サウンド、という形で新しい音楽クリップがこの世に誕生する。「尺」と「テンポ」はユーザがFLASHや映像作品を作るために指定したい「演奏時パラメータ」であるが、その他を全て「生成用パラメータ」として隠匿してしまう点が、「音楽知識を必要としない」本システムの重要なポイントである。

3-3. FMC3生成のためのパラメータ

FMC3の生成パラメータ数は、「1行メイルとして送れるサイズ」を念頭に、FMC3の全体として「100文字」と基本設計した。この1文字にエンコードされる情報量は
	・半角数字の0から9まで
	・半角大文字のAからZまで
という、合計36通りとして割り当てられる(36進法)ので、生成される音楽クリップごとに全てのパラメータが完全に異なる場合には、理論上「36の100乗(6の200乗)」の組み合わせがある事になる。実際には一部をFMC3の管理情報(version/revision等)に使用したり、開発の余地としてReservedとする領域もあり、当面は「36の90乗」程度とするが、それでも十分なバラエティを提供できると考えている。

図4は、この「100文字パラメータ」を扱うブロックのパッチである。ここでは

	・自動作曲エンジン部で生成されたパラメータをテーブルに保存
	・外部のテキストファイルからパラメータを読み込みテーブルに格納
	・パラメータファイルをテキストファイルとして書き出し
	・パラメータ列を画面のテキストエリアに表示
などの処理を行う。Max/MSPは内部的にリアルタイム・アクセスできるデータテーブルを任意に定義できるので、データ幅100ポイント、データ量「0-35」というテーブルとして、FMC3の生成パラメータを内部的に格納した。デバッグ/管理者モードにおいてはこのテーブルをグラフィックに表示できるので、自動作曲の様子が可視化されており、この部分の可能性は今後、「音楽生成情報の可視化」という、新しいテーマとして検討することとしたい。

本システムでは音楽データの自動生成に先立って、まずアルゴリズム作曲エンジンブロックでこの生成用パラメータ群を乱数を用いて自動生成し、演奏パラメータである「尺」「テンポ」などとともに、"nagasm.txt"(予約名)というplain textファイルに書き出す。このファイルは先頭に「NAGASM2005」という10文字の加わった110バイトのデータであり、plain textファイルとして1曲のパラメータが1行100文字、という統一形式で処理できる。将来的に何10万曲という単位でデータベース処理する際にも、この軽さは有効であろう。


Fig.4 FMC3の生成パラメータ処理パッチ

3-4. FMC3生成の自動作曲エンジン部分

メイン画面における第3ステップでトリガされるのが、本システムの中枢とも言える「アルゴリズム作曲エンジン」部分である。図5はそのパッチであり、個々の音楽的要素は全てサブパッチとして階層化されている。図に従ってその動作を追えば、
	・バスドラムのパターン生成
	・スネアドラムのパターン生成
	・クローズドハイハットのパターン生成
	・オープンハイハットのパターン生成
	・ライドシンバルのパターン生成
	・ハンドクラップのパターン生成
	・ベースの1小節目のフレーズ生成
	・ベースの2小節目のフレーズ生成
	・4小節のコード進行生成
	・4小節ごとの基調の移動パターン生成
	・アルペジオ伴奏パターン生成
	・コード(バッキング)パターン生成
	・ロングノート(メロディー)のフレーズ生成
	・イントロの生成
	・エンディングの生成
という処理を次々に行い、終了すると出力トリガを出す。なお、本稿執筆時点ではこの中の一部ブロックは未実装である。


Fig.5 FMC3の自動作曲エンジン部分のパッチ

3-5. FMC3のドラムパート生成アルゴリズム

まず仕様として「36ステップの変数100文字」と限定した下で、本システムでは基幹となるドラムとベース(一種のフレーズ)の生成に重点を置いた。FMC3ではすべての音楽クリップは4小節単位で進行し、キーが小節単位で移動(和声進行+転調)しつつ、ベースのフレーズ生成は2小節単位で同じパターンを繰り返すし、ドラムは1小節単位で同じパターンを繰り返す。これは多数のFLASHコンテンツの分析から得られた最大公約数的な仕様である。図5の自動作曲エンジン部分のパッチでは、ドラムとベース以外の音楽的要素は単にパラメータ(1文字あたり36通り)のランダム指定行うだけであるが、ドラムとベースは以下のように詳細にベース音高情報/ドラム楽器情報とその発音タイミングを持つ演奏情報をパターンとして生成し、パラメータとして管理する。

ベースとドラムのリズムの分解能は、1小節を8分割した「8ビート」、16分割した「16ビート」、12分割した「シャッフル」の表現を包含するために、これらの最小公倍数である「48」分割する基本クロックを用いることにした。これは、昔からMIDIの世界で定番の「タイムベース=48」そのものである。


Fig.6 FMC3の自動作曲エンジン部分のパッチ(バスドラム)

図6は、6種類のドラム楽器のうちバスドラムのパターンを生成するサブパッチの例であり、同様のパッチが「スネアドラム」「クローズドハイハット」「オープンハイハット」「ライドシンバル」「ハンドクラップ」用にも設置されている。個々の基本クロックのタイミングごとに、さらに「8ビート/16ビート/シャッフル」というスタイルごとに生成確率の重み付けを変えて、ONかOFFか、すなわちそのタイミングでバスドラムを蹴るのか何もしないのか、をいちいちサイコロを振って決定している。開発中のアドバンスモードでは、この決定された個々のタイミングのON/OFFを手作業により変更可能ともしているが、これは一般的なシーケンサによる「打ち込み」そのものとなってしまうため、この仕様を公開するかどうかはまだ未定である。

分割した音符に乗っていないタイミングでの演奏は現実的には「とても聞けない」ものであり、1小節を48分割したタイミングの全てに打楽器情報を割り当てるのは、休符の情報ばかりが多くて無駄である。そこで打楽器の鳴らないビートを抜いた24種類のタイミングのみで演奏パッチ側の対応マトリクスを形成した。これにより、ドラムパターンを第76パラメータから第99パラメータまでの24文字で全てを格納することができる。

また、第69パラメータの1文字に「Drum Magic」という変数を定義し、当面は値ゼロとして設計した。これは将来的にあと35種類の異なったバージョンとして、打楽器の種類やビートの種類を変えた別のドラムセクションを実現するための拡張予約パラメータである。

3-6. FMC3のベースパート生成アルゴリズム

本システムは「Drum'n Bass」というイメージを軸に、ベースパートでは「スケール」(個々の時間における音高方向の離散的な配置情報)によって、まず基本的なフレーズを生成する。これは例えば、バッキングでCm7とかDm7/Gというコードが鳴っている時に、ベースなりピアノなりが、あるピッチクラスからランダムに選ばれたノート(一例:C,D,Eb,F,G,A,Bb,B)を、基本単位(16ビートなら1小節を16分割、シャッフルなら12分割したいずれかのタイミング)のいずれかで鳴らしていれば、なんとなくアドリブソロ(フレーズ/リフ)を演奏しているように聞こえる、という作曲における経験則に基づくものである。ピッチクラス内の個々の音の出現確率には重み付けが必要であり、さらに鳴るタイミングにも重み付けを盛り込むことは重要であるが、基本的にはスケールに基づく離散的情報による音高の配置だけでもとりあえず「それっぽくなる」という点を重視した。

過去の自動作曲システムの失敗例の多くは、フレーズ(メロディー)を構成する前後の音の音程関係をマルコフchainなどに持込む、という点にあった。これは、せっかく「それっぽく」なったスケールなり調性(コード)感を喪失させるので、音声領域では有効でも音楽領域では適切でない、と筆者は考える。本システムにおいては、コードを構成する重要なノートとリズム的に重要なタイミング(ビート)を基幹として、そこから低い発生頻度での逸脱を許可(テンションノートとして許容される)しつつ、時間的関係性による配置という要素を盛り込んだ生成アルゴリズムを実装する方針をとった。


Fig.7 FMC3の自動作曲エンジン部分のパッチ(ベース)

図7は、2小節のベースパターンのうち1小節目を生成するサブパッチの例である。時間軸方向では、16ビートとシャッフルの同時演奏を排除して最大16ステップ(シャッフルの場合には先頭12ステップを利用)とし、第36パラメータから第67パラメータまでの32文字でベース2小節全ての演奏情報を格納し、ドラムパートと同様に無駄のない情報圧縮を目指した。

音高方向についてはスケールを検討して、36データを「3オクターブ+5度」の範囲に割り当て、Max/MSPで内部的にこれらのパラメータをtableオブジェクトに格納した。休符(無音)は音高ゼロ、という値として定義した。それぞれのtableにおいて、与えられた乱数を引き数としてベースの音高データをテーブルが返すので、データの幅(占有率)がそのノートの生成確率となる。このパラメータ(tableオブジェクト内容)を表示させることで、ドラムよりも明確に、音高情報を伴う一種のメロディー情報として、ビジュアルにパターンの繰り返しや類似性を確認できる事がわかった。これは今後、グラフィクス情報からこのtableパターンに変換する、という新しいタイプの自動作曲(visual情報から直接にベース音楽演奏パターンを生成)の可能性としても検討していきたいと考えている。

時間軸方向については、第68パラメータの1文字の36ステップを「ベース音の生成密度」パラメータとして利用して、上記のテーブル参照を行う確率として作用させた。これにより、ベースが同じ音高のメロディー(音列)となっても、時間あたりのノート数の分布が大きくばらつくことになり、生成されるベースパートの単調さを解消する効果を得た。

ベースパートの音楽的表現としては、個々の音楽クリップごとに、ノートONからノートOFFまでの音の長さ(duration)が非常に重要である。現状ではテンポ情報に対応した比率に一定の乱数分布の幅を持つ固定値となっているが、アドバンストモードではこれをマニュアルで変更できる(生成パラメータとしては記録されないので、SMFデータ作成時の「味付け」としてのみ利用できる)ような可能性を盛り込んである。最終的に利用できる仕様とするかどうかは、本システムの重要な検討事項であると考えている。

3-7. FMC3のコード進行生成アルゴリズム

基幹となるドラムとベースのパートに加えて、本システムでは控え目な音量ながら「アルペジオパート」と「コード(バッキング)パート」を加えることによって、和声(コード)の感覚を音楽クリップに持ち込んだ。「アルペジオパート」「コード(バッキング)パート」の生成アルゴリズムと実装については次項で解説することとして、ここでは小節単位のコード進行の生成アルゴリズムをまず紹介する。

FMC3の生成する音楽クリップは基本的にループを繰り返すミニマルミュージックの一種であり、その単調さを解消する最大の要素は、コード進行が「バリエーションを持ち」「意外性も加味し」ながら、しかし同時に「予定調和的に(現代音楽のような難解さ/不自然さを回避して)」展開するところにある。ここでは基本的にBach/Jazzの発想を継承して、局所的な暫定解決感、すなわち広義のドミナントモーションを指導原理とした。

Bachの即興パート、あるいはJazzのインプロビゼーションにおいては、近親調や平行調への和声進行とは別に、「転調」として12平均率のどんな調にいきなり飛んでも構わない。転調、あるいは和声進行したその瞬間は非常にテンションの高い(違和感、不協和感)状態であっても、「IIm7→V7(→I)」あるいはドミナント7thコードからの半音下行(V7→Iの裏進行)があれば、そこで聴取する人間は局所的に解決(トライトーンの解消)を知覚認知し、この短期記憶は和声進行に関するより長期の記憶まで後付けのように再解釈させて、最終的な解決に至るテンションとして良好な印象を持つことになる。これは言い換えれば、ランダムな転調であっても局所的に広義のドミナントモーションを繰り返すことで、その音楽は刹那的には違和感なく受け入れられる事を意味する。本システムのコード進行生成アルゴリズムにおいては、この知見(仮説・理論)を最大限に活用した。


Fig.8 FMC3のコード進行生成パッチ

図8は、FMC3のコード進行生成パッチ部分である。ここでは、第8パラメータおよび第11パラメータから生成される計72パターンのうち53種類(残りは将来的な拡張用にreserve)を設定して、Jazzコード理論の教科書にあるようなドミナントモーションの組み合わせ、古典和声教科書にある近親調への和声進行、「循環コード」のようによく用いられるコード進行、PopsやRockで定番となっているコード進行などを、4小節パターンとして用意して、そこからランダムに選択することとした。53パターンのうち24パターンを占めるドミナントモーション系のコード進行パターンとしては、以下の単純なアルゴリズムで全ての組み合わせを実装した。

ルール1

4小節のコード進行は、「前2小節のパターン」と「後2小節のパターン」とを連結する。

ルール2

前半の「2小節パターン」において、後ろのコードは必ずドミナント7thコードとし、前のコードは「ドミナント7th(Secondly Dominant: II7→V7)かマイナー7th(IIm7→V7)のいずれか」とする。そしてrootは「完全5度下行か半音下行(裏5度進行)のいずれか」の2通りで進行する。これにより2*2=4通りのパターンがある。

ルール3

4小節のうち前2小節と後2小節のパターンを連結するルールは、
  (A) 前2小節の後半のコードから後2小節の前半のコードへの隣接進行
  (B) 前2小節の後半のコードから後2小節の後半のコードへの進行(Extended Dominant)
のいずれかである。そしてrootは「完全5度下行か半音下行(裏5度進行)のいずれか」の2通りのパターンで進行する。

ルール4

後半の「2小節パターン」において、後ろのコードは必ずドミナント7thコードとする。「○→Vm7」という進行は無いので、ルール3(A)の場合には前のコードはマイナー7thは採用されず必ずドミナント7thとする。これにより、4*2=8通りのパターンがある。

ルール5

後半の「2小節パターン」において、ルール3(B)の場合には、前のコードも「ドミナント7thかマイナー7thのいずれか」の2通りがある。これにより、4*2*2=16通りのパターンがある。以上を組み合わせると、(A)(B)合わせて計24パターンのコード進行が生成できる。

図8にあるように、このように4小節パターンで回るコード進行は、生成された音楽クリップごとに一定であり、最初から最後まで変わらない。この単調さを打破するのは、4小節ごとに設定されている基調を、次の4小節ではrootを12音のいずれかからランダムに選んで移動する、という強制転調パラメータであり、第3パラメータから第6パラメータまでの4文字(4小節単位で4回の転調設定)として、将来的な拡張の可能性を含みつつ定義した。従って生成される音楽クリップは、大きく16小節を単位として回っているのであるが、転調は隣接する4小節ブロックごとの相対的な音程移動なので、16小節たっても元に戻るとは限らない(たまたま戻る確率の方がかなり低い)。16小節ごとに12音のどの音程関係に転調しても、その後のコード進行によって瞬間的な違和感がやがて解決に至るテンションという印象を持つように知覚され、生成パラメータは単純なのに次々と展開する音楽という効果を得ることができた。

3-8. FMC3のアルペジオパート生成アルゴリズム

前項のアルゴリズムによってコード進行(各小節ごとのコードネーム情報)が生成され、これを用いてFMC3では、メインであるドラムとベースに加えて、控え目な音量で「コード(和音)パート」による伴奏を付加している。ただし基本方針として「和音を全て同時に鳴らす」というような演奏は避けたいので、コードを構成する個々の音を時間的にずらして鳴らす「アルペジオパート」とした。図9はその生成パッチであり、分散和音として5文字分の生成パラメータによって伴奏情報を生成する。


Fig9 FMC3のアルペジオパート生成パッチ

第31パラメータとして定義したのは、各小節の1拍目のどこからアルペジオを開始するか、というスタートポイントで、1拍目を16分音符単位に4分割した4箇所として指定する。これに、ドラムとベースに対してMIDIノートベロシティとして相対的に音量を下げる9段階の音量パラメータを設定し、計36パターンとして規定している。第32-第35パラメータとして定義したのは、ループを構成する4小節それぞれに対して、4和音である分散コードの展開系(4種)、そして分散和音の形状(9種)の計36パターンである。すなわちFMC3のアルペジオパートは、小節ごとに異なるコードに対して、分散和音の展開系(ボイシング)、さらに分散和音の音型までそれぞれ別個に演奏していて、電子オルガン等にある単純なパターンの繰り返しに比べて複雑なパターンを演奏している。パターンの先頭ポイントが16分音符単位で遅れることも、ヒューマンな味を出すための経験則から来たテクニックである。

さらに、アルペジオの分散和音のそれぞれの発音開始タイミング(間隔)については、音符を定義するシステムクロックとは同期させず、テンポ情報に対応した比率に一定の乱数分布の幅を持つ固定値(msec)として、アドバンストモードではこれをマニュアルで変更できる(生成パラメータとしては記録されないので、SMFデータ作成時の「味付け」としてのみ利用できる)ような可能性を盛り込んだ。アルペジオ音の長さ(duration)情報もまったく同様に設計した。これらを最終的にユーザが利用できる仕様とするかどうかも今後の検討事項である。

3-9. FMC3のコード(バッキング)パート生成アルゴリズム

コード進行(各小節ごとのコードネーム情報)に対応してFMC3で生成する音楽情報として、メインであるドラムとベースに加えて、控え目な音量で「コード(和音)を短くカッティング演奏するパート」による伴奏も付加した。ただし基本方針として「和音を全て同時に鳴らす」というような演奏は避けたいので、コードを構成する4音のうち重要な2音だけを同時に、各小節の2拍目(必ず演奏)と4拍目(無し/演奏)に2音フレーズとして短く鳴らす、という仕様とした。図10はその生成パッチである。


Fig10 FMC3のコード(バッキング)生成パッチ

第70-第73パラメータとして定義したのは、ループを構成する4小節それぞれに対して、たった1文字分の36パターンである。ここには3種類のコード(バッキング)パート生成情報を以下のアルゴリズムにより多重化した。総計で2*3*6=36通りとなる。

バッキング生成情報1

各小節(4/4)の2拍目に、基本ビート(8beat/shuffle/16beat)に応じて、以下のいずれかを演奏する。とりうる場合は2通り。
	・8beat	の場合 - [0]8分音符を2発 - [1]8分音符+8分休符
	・shuffleの場合 - [0]3連符のうち真ん中が休符 - [1]3連符のうち最後が休符
	・16beatの場合 - [0]16分音符+16分休符2発+16分音符 - [1]16分音符を2発+8分休符

バッキング生成情報2

各小節(4/4)の4拍目に、基本ビート(8beat/shuffle/16beat)に応じて、バッキング生成情報1と同じか、さらに[2]として「全て休符」を加える。とりうる場合は3通り。

バッキング生成情報3

2拍目および4拍目では同一構成の2音を演奏するとして、そのコードネームに対して、以下の6状態から演奏する。数値はそれぞれのコードネームのroot(基音)からの音程intervalである。とりうる場合は6通り。
	・[0] - majorコードなら[4-12] - minorコードなら[3-12]
	・[1] - majorコードでもminorコードでも[7-12]
	・[2] - majorコードでもminorコードでも[10-12]
	・[3] - majorコードなら[4-7] - minorコードなら[3-7]
	・[4] - majorコードなら[4-10] - minorコードなら[3-10]
	・[5] - majorコードでもminorコードでも[7-10]
Jazzの世界では「4和音のコードの全てのコード構成音を鳴らすのはダサい」というのは常識であり、このように演奏する音の数を限定することで、よりバリエーションを増やすメリットを得ることができた。

4. SMFデータ出力以降の処理

本システムが常に出力するのは、音楽クリップ生成のための100バイトのパラメータを持ったplain textファイル"nagasm.txt"だけであり、ここからSMF形式のMIDIファイルに書き出すためのボタンをメイン画面に持っている。FLASHコンテンツなどの制作において必要なのはMIDIデータ形式の音楽演奏情報でなく、MP3形式・AIFF形式・WAV形式などのサウンドファイルである。本システムではこのために必要となる「MID→サウンド」変換の機能を、音楽情報処理関係の調査を行った上で敢えて搭載しないこととした。その理由を以下に述べる。


Fig11 MIDI→WAVコンバータソフト"Midi2Wav"の画面

4-1. MIDI→サウンドの変換ツール

図11は、Windowsのアプリケーション(シェアウェア)である"Midi2Wav"の画面例である。このソフトウェアは、任意のMIDIファイル(SMF形式)を入力として、さらにライン入力やマイク入力などの補助入力をミキサーでミックスしながら、高品位のWAVサウンドファイルに録音(変換)する、というものである。世界中にこのような「MIDI→WAV」あるいは「MIDI→MP3」というコンバータは多種、発表・提供されており、そのサウンド(音源ドライバ部分)は全てそれぞれの個性を持って異なっている。ユーザは自分の耳と感性で、自分の好きな音源を選んでサウンドにする、というのは重要なことであり、本システムが音源部分を特定のものとして強制することは、FMC3の趣旨からも避けるべきであると考える。

また図12は、Windowsのアプリケーション(シェアウェア)である"MID Converter"の画面例である。このソフトウェアは、MIDIファイル(SMF形式)を多数同時に指定入力して、高品位のMP3あるいはWAVサウンドファイルに一括変換する、というものである。このようなソフトウェアを使えば、FMC3で生成された多数の音楽クリップのパラメータファイルを元に、バッチ処理によって同時に多数の音楽クリップを自動生成するシステムとすることも容易である。


Fig12 MIDI→WAV/MP3コンバータソフト"MID Converter"の画面

4-2. 音源の自由度とコンピュータ標準環境

インターネットで「MIDI」「cenvert」「MP3」などのタームを検索すれば、WindowsでもMacintoshでもLimuxでも、このようなツールは多数がフリーウェアやシェアウェアで提供されており、さらにソフトウェア音源でなく、電子楽器メーカの提供する高品位なハードウェア音源を利用して音響データを作成するのも、それぞれのユーザの好みに応じて自由である。

Macintoshの場合には、マルチメディアの標準環境であるQuickTimeプレーヤは、MIDI(SMF)ファイルをリバーブ(残響)付きの高品位な音響として再生し、さらにこれをAIFF/WAVサウンドファイルとして保存できる。標準添付されているiTuneを使えば、これらのサウンドファイルはお手軽にMP3ファイルに一括変換できるので、特別なソフトウェアを探すまでもなく、標準のMacintoshだけで全てを行うことができる。このような理由により、本システムはMIDIファイルまでの出力という仕様を決定した。

5. おわりに

「誰でも手軽に作品系FLASHコンテンツの音楽パートを自動生成するシステム」の開発研究における、前半部分の開発研究報告と今後の計画の紹介を行った。今後、具体的な研究をさらに進めて、目標とするシステムの公開・応用へと進めていきたい。

参考文献

[1] 長嶋洋一 : 作品系FLASHコンテンツの分類と傾向について, 情報処理学会研究報告 Vol.2005,No.59 (2005-EC-1), 情報処理学会, 2005
[2] 長嶋洋一 : 作品系コンテンツのための自動作曲システムに向けて(1), 情報処理学会研究報告 Vol.2005,No.82 (2005-MUS-61), 情報処理学会, 2005
[3] クリエイティブ・コモンズ・ジャパン, http://www.creativecommons.jp/