Hatena::ブログ(Diary)

やねうらお−俺のボカロがこんなに音痴なわけがない。 このページをアンテナに追加 RSSフィード

電王戦出場記念! 書籍化されたで! 監修したで!(`ω´) 絶版なってしもた 絶版プレミア価格 記事書いたで!
解析魔法少女美咲ちゃん マジカル・オープン!

YaneuLabs / やねうら王公式 / やねうらおにメール / twitter / プロフィール

2014-04-20 ボカロ(作るところから)はじめました

[] ボカロ(作るところから)はじめました  ボカロ(作るところから)はじめましたを含むブックマーク  ボカロ(作るところから)はじめましたのブックマークコメント


今日からボカロを始めることにした。もちろん、ボカロを作るところからだ。ボカロを含めて音源自作する。楽器(ハード)も自作する。

音楽理論自分で構築しなおす。自動作曲のためのプログラムも作る。そうして、やっと自分だけの音楽が完成する。とりあえず、目標はそこだ。


■ ボカロを作るとは?


初音ミク代表されるようなボーカロイドは、「あ」「い」「う」など、人間がそれぞれの文字を発声したものを録音しておき再生しているだけである。つながりが不自然なところは二文字、ときとして三文字つなげたファイルも持っている。ただそれだけである。私はそういうことをしたいわけではない。声を一から作るところからだ。


■ スーパーファミコンDSP


順序立てて話そう。


私は高校生ときアーケード麻雀移植のために音声合成の処理を書いたことがある。*1

このプログラムは実際には世に出なかったわけであるが、私はそれ以前から、音をプログラムすることに関して強い関心があった。


Falcomの『イース』の音源ドライバー中学とき夏休みを丸ごと潰して解析したのも音に対してすこぶる興味があったからだし*2、BM98を作ったことにしてもその延長線上にある。私はプログラム以上に音に対しての興味があった。


2004年ごろにソニーPS3の開発に際し、PS1/2のエミュレーションレイヤーの実装のための人員募集をしていた。そういう仕事は大好きなので、応募しようかと思ったのだが、その給料があまりにも安く、当時の自分給料の何分の一かになってしまうので、ずいぶん悩んだのだが、ついに応募はしなかった。ただ、そのときは応募も本気で考えていたので、小手調べにスーパーファミコンDSPソフトウェア実装してみた。


スーパーファミコンのサウンドを一度でも聴いたことがある人は、耳が腐ってでもいない限り、あれがとても特殊なサウンドであることがわかるだろう。ファミコンのそれとは一線を画する、そしてそのあとブームとなるFM音源とも異なる、骨太のサウンドである。実際、FM音源全盛期にスーパーファミコンゲーム移植しようとした会社が、FM音源パラメーターをどう調整してもスーパーファミコンっぽい音が出せなくてとても苦労したという話は枚挙にいとまがない。


要するに、スーパーファミコンDSP(サウンドチップ)とは当時の歴史のなかに本来、技術的に存在してはおかしいようなオーパーツのものなのである


何故こんなオーパーツがこの世に存在したのか。実は、このDSPはのちにソニー(SCEI)の社長にもなる久夛良木さんが手がけたものなのだ*3


f:id:yaneurao:20140420051801p:image


久夛良木さんレベルの超天才エンジニアの手がけたハード自分の手でエミュレーションレイヤーを実装してみて初めてその設計思想、素晴らしさが実感できるわけである。私はもちろん、久夛良木さんレベルのエンジニアではないが、しかし、プログラムを書く能力は人並み以上にあるから久夛良木さんのDSP自分の手でソフトウェアで再実装することが出来た。誰しも感動する小説に出会えたときには自分に文字を読む能力があり、そして小説の内容を理解できる能力が備わっていたことに感謝するだろう。それと同じ感動がそこにはあった。あのときだけは、自分プログラムを書く能力が備わっていたこと、そして、久夛良木さんの天才性の一部であれ、理解できたことに対して神様感謝してやまなかった。


スーパーファミコンDSPのどこがそんなに優れているのかについてざっと書いておく。本当は、この部分は本記事にはあまり関係がないのだが、ここを書いておかないと「やねうらおめ、また内容のない薄っぺらい記事を書きやがって!本当はスーファミDSPことなんか何も理解していないくせに!」などと勘ぐる輩が出てくるので、あえて書いておく。

※ 技術的な内容なので、興味のない人は読みとばしてください。


スーパーファミコンDSPの公称性能はこうなっている。*4


f:id:yaneurao:20140420051802p:image


上の説明は今ひとつわかりにくいが、DSPとは別に制御用のチップが載っている。6502を拡張した命令セットを持ち、音源ドライバーなどはここに配置する。この音源ドライバー結構いろいろなことが出来てしまうので、スーファミのサウンドはゲームメーカーによって音色がずいぶん違うと言われるゆえんである


・BRR圧縮された波形データ復元


事前にサンプリングした波形データ復元する機能PlayStationで使われている圧縮アルゴリズムと同一である*5


ADSR


ADSRは、Attack、Decay、Sustain、Releaseの頭文字で、FM音源に見られるようなエンベロープジェネレーターであるが、A,D,S,Rの値はそれぞれ4bit、3bit、5bit、3bitで指定する。(そのあと表引きして実際のA,D,S,Rの値が設定される) 併せて15bitだから16bitに収まっている。いまどきなら、それぞれの値を直接設定できるようにするところだろうが、当時はメモリもったいないのでこういう設計が好まれた。


ところが、このADSR機能を使わずに直接gain(≒ボリューム)を変更するモードもある。実のことを言うと大手メーカースーファミ用の音源ドライバーADSRモードではなく、こちらのモードを使ってあるものが多い(と思う)。自前の音源ドライバーADSRよりもっと細かな制御をしたほうが、サウンドに広がりが出てくるからである。なのでADSRはこのDSP代表的機能ではあるが、スーファミのサウンドの特徴ではないと私は考えている。


ガウス分布補間


指定した4点を曲線で補間する機能。実装的にはガウス分布テーブルを用いている(表引きしている)ので正確な補間ではないし、さら計算資源があるならスプライン補間したほうが歪みのないサウンドになるし、いまのPC用にソフトウェアで実装するならそうすべきところではあるのだが、良くも悪くもこの“歪み”自体スーファミらしいサウンドを形成していると思う。


ディレイ


ファミコンにはディレイがなかったのでこれは大きな進歩久夛良木さんの発言によると『ファミコンについてはサウンドトラック4本や音のディレイがないことから「そんなもんで音楽なんてやれませんよね」「普通の人はそれで感動するかというと、ぼくは感動しないと思う」「クリエイターがやりたいと思ってることがやれるかどうかというのがキー」』*6


リバーブ(次数8のFIRフィルタ付)


リバーブFIR(有限インパルス応答)フィルタ*7までつけてしまうのが恐ろしい。ここの「次数8」というのは、パラメーター(係数)が8個指定できるという意味FIRフィルタ自体デジタルフィルタとしては基本的ものなので説明は割愛


スーファミのサウンドまとめ


結局のところ、上記のような当時としてはかなり高機能な処理能力を備えたDSPと、このDSP制御チップ(ここに各ゲームメーカーが独自のサウンドドライバーを載せた)との組み合わせによりスーファミらしいサウンドがもたらされたわけである


■ オリジナルボカロを作るとは?


もうここまで説明すれば話は見えただろう。今回、ボカロ自作するわけであるが、まずそのためにスーファミDSPのようなソフトウェア実装のサウンドレイヤーを用意する。まあ、人間の肉声に近いサウンドが欲しいわけで、スーファミDSPよりは少し高機能ものにならざるを得ないが。また、ここは将来的にハードウェア化するかも知れないので、この部分はそのへんも見越しておく。


次に、このDSPに対してプログラムできる必要があるのだが、DSP制御用の命令セットを用意して、その命令によってプログラムすることにする。(将来的なハードウェア化を視野に入れているため)


あと、この自作ボカロライブで使うような用途を考えているため、この自作ボカロリアルタイムに歌わせることが出来るような楽器自体を作らなければならない。そのへんもすでに考えてある。


かなり早口な歌でも訓練次第ではリアルタイム演奏が可能である画期的楽器(音楽的なデバイス?)となる予定だ。


■ 音楽自動作曲とは?


ついでだからもう少し話を進めよう。コンピューターによるアルゴリズム作曲(自動作曲)についてである。この分野の近年の技術進歩めざましく、論文もたくさん出ているし、アルゴリズム作曲実用的になりつつあると思うのだが、私はそういう方向性でやりたいわけではないのだ。


作曲をやっている人にはわかると思うけど、どこかの段階で対位法とか勉強するわけだ。二声対位法、三声〜八声、厳格対位法模倣、二重対位法フーガetc…。そうするとその手の教科書には「禁則」(こういう進行は良くない)が延々と書いてある。和声に関しても、ある程度基礎が出来たのちに、いわゆる芸大和声(asin:4276102057)あたりから勉強するわけだが、「禁則」のオンパレードである。そして、興味深いことに本によって何が「禁則」であるかは定義が異なる。


じゃあ、そもそも「禁則」とは何なのか。

このように「禁則」とすることによって何が得られるのか。


結論的に言うと、その本を書いた人が想定している音楽(それは18世紀のものであったり、それ以前のものであったり、特定作曲家のものであったりするのだが)が得られるということである。この部分を理解していないと、やみくもに「禁則」だけ覚えることに終始してしまい、自分の作る曲の音楽的な可能性を狭めてしまう。


要するに「禁則」とは、曲の生成アルゴリズムが何かしらあるとしてそのためのルール集合の一部だと考えるとわかりやすいだろう。


例えば、モーツァルトの曲を分析し、そのルール集合が得られれば、そのルール集合からモーツァルトの曲っぽい曲が自動生成できるということだ。


しかし、自動生成と言っても、単にルール集合に書かれているルールを順番に適用していけばいいという単純なものではない。例えば、前の音符との次の音符との接続される形に良さの点数がつけられるとしたら、その点数を最大化したい。そして一曲通してその点数の合計が最大になるような曲にしたい。そうならないときは前の音符を消して、また別の音符に置き換えて…という作業を繰り返す必要がある。


実はこの部分はコンピューター将棋の探索と全く同じなのである。音符一つ(音符の高さ・音符の長さ)が将棋の指し手に相当し、音符を一つ置くことが将棋ではその指し手で局面を進めることを意味する。将棋で読みのなかで局面をいったりきたりするが、音符を足したり、消したりするのはそういう理由からである。そして、将棋であれば最終的な点数(将棋であれば最善応手列≒読み筋)の末端局面の評価値が最大になるような現局面での指し手を探すが、曲作りときも、最終的な点数が最大となるような音符の並びを探し出せば良いのである


まり自動作曲は実はルール集合さえ与えれば、コンピューター将棋の探索部によって解決できるのである


これは何も偶然の一致ではない。人間知的作業のほとんどは、何らかの点数を最大化するという、探索を伴う最大化問題に帰着されるので、作曲行為自体コンピューター将棋の探索の問題に還元されるのは何も不思議なことではないのだ。


■ 作曲のためのルール集合


では人間は何もしなくても曲が出来上がるのかと言うとそれは違う。作曲のためのルール集合自体人間が考えてやる必要がある。

ルール集合が同じであると似たような曲しか出来ないし、そこがまさに人間しか出来ない知的作業と言えるわけである


例えば、坂本龍一(織田信長に「さん」をつけないの同様、歴史レベルの偉人なので敬称をあえて略す)の作曲のための方法論として、自分が考えた作曲アルゴリズムに基づき、自分作曲機械だとみなしてそのアルゴリズムにより曲を生成し、その曲の良し悪しを音楽家坂本龍一が評価し、そして作曲アルゴリズム修正を行なうというフィードバックループにより作曲するという主旨のことが『坂本龍一音楽』(asin:4487801036)に書いてあったと思う。(うろ覚え)


坂本龍一が本当にそうやって作曲しているのかどうかは私は知らないが、そういう視点というのが面白いと思っていたし、この「自分作曲機械だとみなしてそのアルゴリズムにより曲を生成する」という部分は、私のプログラミング能力であればコンピューターに完全に肩代わりさせることが可能だ。


そうなってくると、「自分が考えた作曲アルゴリズム」が問題となる。従来のアルゴリズム作曲論文では、この部分が固定に近い形であったので、同じような曲しか作れなかった。自動生成される曲の完成度はともかく、私にはその部分が大いに不満であった。


私は特定ジャンル特定の種類の曲を大量に生成したいわけではないので、上記のようなフィードバックループをなるべく短い時間で回したいのである。そうすることにより短い時間自分作曲アルゴリズムが磨かれるわけである


そして、最終的にはこのループ自体を少しプログラム音楽に対して理解のある人であれば誰もが体験できるよう、自動作曲のためのプログラミングフレームワークとして公開したいわけである


■ まとめ


ということで、私の当面の目標は以下のような感じである。(何年かかるかは知らん)


ボカロ自作(そのために自分設計したDSPソフトウェア実装するところから)

音源自作(自分設計したDSPに対する制御プログラミングにより)

ボカロライブ演奏できるような楽器自作

アルゴリズム作曲とそのフレームワーク作成


■ あとがき


何故突然こんなことを思ったのかと言うと、電王戦が終わったので友達に借りてる漫画を読んでいたわけである。その友達とは電王トーナメントエントリーときにやねうら王の開発者としてもう一人名前が挙がっていたと思うが、彼である。彼は、いつも私をその気にさせる。やねうら王も彼がいたから作ろうという気になったわけである。だから、やねうら王のエントリーとき共同開発者として彼の名前を入れておいた。


今回、彼が持ってきた漫画は『ナッちゃん東京編 1―下町鉄工所奮闘記』 (asin:4088597001)という漫画で、下町の鉄工所で働く女の子(?)の物語である。この女の子ちょっとした天才で、創意工夫によって無理難題を解決していくわけであるが、これを見ていたら昔のことを思い出したわけだ。


私は小学生の段階ですでに仕事としてやっていける程度にはプログラミング能力があったわけであるが、大学卒業するころにはプログラミング自体に少し嫌気が刺しており、これを職業にするとプログラミングのことが嫌いになってしまうと考えて、プログラミングとは全く違う分野(製図設計)の仕事に就いたわけである。正直に言えば当時は自分プログラミングが出来ること自体が、本当に忌々しいと思っていたし、「こんな神がかったプログラミング能力とか要らねえんだよ!俺は、刺身たんぽぽを乗せるような頭の使わない仕事がしたいんだよ!」と考えていた。


ところが、モノづくりの現場で働くうちに、創意工夫して製品を作る(さらに、それをお客様に届け、喜んでもらう)ということの素晴らしさを知ったわけである。『ナッちゃん東京編 1―下町鉄工所奮闘記』を読んでいると、そんな当時の自分を思い出してしまった。そうだ、何でも工夫すれば作れるんだ。俺には、神がかったプログラミング能力があるんだしな!と思ったわけだ。


※ このブログの愛読者ならば、「神がかった」とか書いてあっても「また今日やねうらお節、全開だな」ぐらいに理解してもらえるはずなのであるが、そうでない人に言っておくと、「神がかった」というのは、ある種の冗談であり誇張表現の一種である。本気で自分プログラムを「神がかった」などと思っている人がいたら、それは相当な大馬鹿野郎である


そして、そのとき音楽コンピューター将棋との関係気づき、点と点が一本の線でつながったわけだ。これは、もうボカロを(作るところから)やるしかないなと。


ちなみに、私の作曲経験だが、自分の作った曲が商用ゲームに使われたことがある。まあ、自分プロデューサーだったんだから自分の曲使おうが何を使おうが自由なんだけども。商用ゲームに使われたらプロだという定義だとしたら、私はプロ作曲家である。おお、これはなんか凄くずるい感じがするな!


プロ作曲家になりたい人は、自分で商用ゲームでもプロデュースすればいいんだよ!」などとテキトーなことを言ってこの記事を終りにしたい。

羊 2014/04/20 05:47 びっくるねっとの頃からやねさんの音に関する記事を読んでました。私もボカロエンジンを作ってみたいと思っていましたので、とても楽しみにしています。

yaneuraoyaneurao 2014/04/20 05:57 ↑ボカロエンジンを作ってみたい?むしろ、私と一緒に作ればいいんじゃまいか?

七空白七空白 2014/04/20 06:28 あらま・・・おいでなさいましたか。

半分ぐらいびっくりしています。
(半分ぐらいは想定はしてましたw)


というのも、俺は9年前から作曲初めたんですが、ほぼぴったりこれ全般的に6年前から挑戦していることですw
(そのためにプログラミングを学んだ形で、なお、今年中には1曲はリリースしたいとこですが、今は全て未公開なので、その分類では、未だプロとはいえないですかw)

細かいとこでは

・ボカロをライブ演奏できるような楽器を自作

は、やろうと思っていませんでした(最終波形生成に時間はかかってもいいと思ってました)し

・アルゴリズム作曲とそのフレームワークの作成

は、学習にあたっての大量のデータの収集法」をどうしようか、とか思ってw
とりあえず保留になってます。
(やねうら王をいじったやねうらおさんなら、だいぶ楽にやり遂げられるかも)


ただ、リアルタイムでなくても良いので、かなりリアルなボカロを自作できるソフトの完成自体はぜひともと思ってました。

そこまでやれば、3Dモデル→高度なトゥーンレンダで、商用レベルのアニメが「たった一人でも時間をかければ現実的に作れる」時代になる可能性があり、挑戦意欲を掻き立てられたからです。


もひとつ、どんな曲にも適用できる、おそらく世界初レベルのことも挑んでいますが、(というか、ボカロの話はその延長で思いついた形です)


既存のDAWなど
音楽関係の開発者の方が、決して路頭に迷うことのないようにしっかり配慮したいとは常に考えています。
(一番言いたいのはここです)


やねうらおさんの周辺環境であれば、ものすごく速く作れるかもしれませんが


次、音楽界に挑む場合は、今回の電王戦の事も受けまして、是非お手柔らかにお願いしますよw

世界にだだっ広く広がっていますから、もし次炎上とかなったら、流石に心配すぎます…

yaneuraoyaneurao 2014/04/20 07:08 ↑な、、長いぞ!3行で頼む!! (自分のことは棚にあげて他人には3行で書けというのがやねうらおクオリティ)

七空白七空白 2014/04/20 07:16 そうですかw ではw
既存のDAWなど、音楽関係の開発者の方が、決して路頭に迷うことのないように配慮して頂けると幸いですw
とか言って、ちゃんと読んでるんじゃないですか〜?w

トラックバック - http://d.hatena.ne.jp/yaneurao/20140420

人気blogランキング
1900 | 01 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 |


Microsoft MVP
Microsoft MVP Visual C# 2006.07-2011.06