オープンソースの研究1

昨年秋から開発を進めているウェブ用の音響合成ライブラリをオープンソースにするための準備をすすめています。
その中で、国内のオープンソース事情について少し調べてみました。

オープンソースといえばなんといってもSourceForgeが有名です。
世界中の著名なオープンソースのソフトウェアの多くがSourceForgeで管理されています。
そのSourceForgeの日本版がSourceForge.jpです。
参加者の多くが日本人なので、日本語で開発を進めることができます。
海外の方と共同で作業を進める場合には、言葉の違いがしばし大きな壁となってしまうことがあります。
なので、日本語で自然にコミュニケーションを取れたり、ソースコード内のコメントを日本語で記述しながら開発していける点は、日本人にとっては非常に有益な環境でしょう。

そんなSourceForge.jp内のプロジェクトを一通り見てみました。
率直な感想としては、参加者が一人しかいないプロジェクトが非常に多かったことに驚きました。

http://sourceforge.jp/top/mostactive.php?type=week
こちらのページから活発なプロジェクトのリストを見ることができます。
当然といえば当然かもしれませんが、活発なプロジェクトほど参加者が多いです。
もちろん、参加者一人でも活発に活動されているプロジェクトも多くありますが、やはり全体的に見れば参加者が多いプロジェクトほど活発に開発が進められている傾向にあるようです。

その中で個人的に注目したのは2ch関連のプロジェクトです。
予想以上に2ch用のブラウザ等のプロジェクトが多く登録され、盛り上がっていることに驚きました。
おそらく2chといういろいろな人が利用する巨大なコミュニティがあることが、多くのプロジェクトを生み出す原因となったのだと思いますが、これらのソフトウェアのほとんどが無償で公開され、利益が2chの利用者の間に還元されていることは非常にすばらしいことだと思います。

オープンソースのプロジェクトを成功させ利益を最大限世の中に還元するためには、なるべく多く参加者を集めることが一つの大事なポイントなのかもしれません。

ページアクセスを音に

Web2.0においては、人の活動の結果がサイト上になんらかの形で反映される、というのが重要なポイントの一つではないかと考えています。

そこで、ページアクセスを音に変換するという実験をやってみようと思い、早速トップページ(http://www.kreuz45.com/)にちょっとした小細工をしてみました。過去16時間にアクセスしたユーザの数/タイミングによって、合成される音が変化していきます。

ちなみに、このプログラムは現在開発を進めている音響合成ライブラリのデモンストレーションもかねて作っています。12/30現在は、ノイズジェネレータとリズミックゲートエフェクトを組み合わせて音を合成していますが、後々もう少し面白い形に改良していこうと思います。

音響合成ライブラリ開発中

前回のエントリからだいぶ時間が空いてしまいました。最近は、音響合成ライブラリの開発を行っています。 具体的には、Kreuz45 Drum Loop MakerやMy効果音.net等で使用した音響合成関連の関数等をもとに、ある程度汎用性をもたせた形に作り直しています。Webサーバー上での使用を想定しており、PHP上で動作します。その他のライブラリは基本的には必要ない予定です。β版の一般公開は2008年2月頃になる予定です。

ウェブページ上で音を鳴らす方法(補足)

インターネット上で音を鳴らす方法について調べていたところ、ロンドン大学の方が各ブラウザ間における挙動を調査したページがありました。
2005年と若干古い情報ですが、詳細に調査されているので一見の価値ありです。

http://www.phon.ucl.ac.uk/home/mark/audio/play.htm

Drums Loop Maker

ブラウザ上でドラムループを作成できる、Webベースアプリケーションです。
シーケンサーの試作のために作りました。
オーディオ合成部分の言語はPHP、再生部分は単純に生成したファイルにリダイレクトさせています。

作成したパターンは他のユーザと共有できるほか、最後のユーザが使用した状態が次のユーザのログイン時のデフォルトのパターンとなっています。

このアプリケーションの音響合成部分は単純なサンプルプレイバックシーケンサーなので、将来的にはピッチの可変、ベロシティなどにも対応させていこうと思っています。

ブラウザ上で音を鳴らす方法

音楽制作ツールである以上、最終的にはなんらかの方法で生成した音がユーザに届くようにしなければいけません。
通常のWindowsアプリケーションであれば、OSのAPIを呼び出したり、DirectX、ASIOなどを利用してスピーカーから音を鳴らす事は難しくありません。
通常のHTMLでは基本的にこれらのAPIやライブラリは呼び出すことができません。

しかし、音を再生する方法が全く無いわけではありません。
以下のような方法を使えば、ブラウザ上から音を鳴らす事ができます。

音楽ファイルを再生できるタグを利用する
Flashを利用する
Javaアプレットを利用する
ただし、これらの方法にはそれぞれメリット・デメリットがあります。
例えば、Flashでは再生時に音量や左右のパン、再生位置を調整できますが、wavフォーマットはそのままでは再生できません(2007年現在)。
また、EMBEDタグを使えばwavフォーマットのファイルを再生できますが、再生位置を調整したりすることはできません。

どの方法を採用するかについてはユーザインターフェイスの作成にも大きく影響してくるため、ソフトの目的によって実装方法を変えたり、いくつかの実装方法を組み合わせていく必要があります。

HTML上で表現する以上、どの道タグを使うことにはなるのですが、ここでは「プラグイン(FlashやJavaアプレット)上で音を鳴らす」のを除いて、タグだけをいじって音を鳴らす方法をご説明します。

古くからあるHTML上で音を再生するタグとして<BGSOUND>があります。
これを使うと、画面上にプレイヤーを表示させることなくBGMとして音楽を再生させることができ、ループ再生なども設定できます。
小さなことですが、プレイヤーが表示されるかされないか、というのは使い勝手に大きく影響がでてきます。

しかし、結論から言うとBGSOUNDは音楽制作アプリケーションには向いていないようです。
最大の理由は、このタグがInternet Explorerの独自仕様だからです。
つまり、FirefoxやSafariなどのブラウザではこのタグを使って音を再生することができません。
いくらInternet Explorerの普及率が高いとはいえ、他のブラウザで動かないとなってしまうとウェブベースアプリケーションの「環境依存しない」というメリットを失ってしまう事になります。

そこで、BGSOUNDに代わるタグとして埋め込みオブジェクト(EMBEDタグ)を利用します。
EMBEDオブジェクトはプラグインを呼び出すためのタグですが、パラメータに楽曲ファイルを指定すると自動的にそのファイルを再生可能なプラグイン(Windows Media PlayerやQuickTime)が呼び出され、ファイル再生してくれます。

ただし、EMBEDタグを使った場合の挙動は対応するプラグインによって若干変わります。
さらには、プラグインのバージョンが変わった場合などにも挙動が変わってしまう可能性もあります。

また、最近ではあまりないと思いますがWAVファイルやMP3ファイルなどを再生するプラグインが入っていない環境では、プラグインが起動せずファイルも再生されません。
ただ、Windowsの場合はWindows Media Player、Macの場合はQuickTimeなどが入っていることが多いため、EMBEDタグを使ってWAVファイルを再生させる仕様にしておけば大抵の場合WindowsでもMacでも再生できます。

なお、EMBEDタグでは基本的に再生させるファイルのパスを指定する形になるため、あらかじめ再生させる音データを生成した上でタグを吐き出す形になるため、ユーザの入力にたいしてリアルタイムに音を変化させたり…ということには対応できません。
具体的には、
ユーザがパラメータを指定→サーバー側のプログラムで音響合成してファイルに書き出し→Ajaxを使ってEMBEDタグを書き換える
という形で使用するのが一般的だと思います。

ちなみに、EMBEDタグを使った場合は画面上にプラグインのインターフェイスが表示されますが、CSSで見えない(見つかりにくい)ように設定することも出来ます。
余談ですが横幅を0px、高さを0pxにしてしまうと動作しないプラグインもあるので注意が必要です。

参考:
<embed> – オブジェクトの埋め込み (とほほのWWW入門)
http://www.tohoho-web.com/html/embed.htm

ウェブベースの音楽制作アプリケーションの問題

ウェブベースの音楽制作アプリケーションの開発・研究を進めていくと、普通のウェブベースアプリケーション(文書作成ソフトや画像編集ソフトなど)にも増して、実現のためには超えなければいけない壁がいくつもあることがわかってきました。

入出力

まずはじめに、「どうやって音を鳴らすのか」という問題に直面しました。
通常のWindowsアプリケーションであれば、OSのAPIを呼び出してスピーカーから生成した波形を出力させることは難しくありません。
しかし、ブラウザ内の要素(DOM)もっと簡単に言ってしまえばHTML上から音を鳴らす手段はごく限られています。
また、マイクなどのデバイスから入力された信号、MIDIインターフェイスからの入力なども受け取る事も困難です。

音の遅延

サーバー上で生成された波形がユーザの下に届くまでには時間がかかります。
ユーザが操作した結果を耳で確認できるまで時間がかかるというのは、場合によっては非常に致命的な問題です。

プラグインとの連携

DAWソフトで音楽を作る場合には、最近はVSTやDXiのプラグイン・ソフト音源を使うのは当たり前になってきていますが、これらを使う事もできません。

サーバーの負荷

ただでさえ音楽データは容量が大きい上、複数のユーザが同一のサーバー上で同時に高度な処理をさせようとするとサーバーにかかる負荷が極端に大きくなってしまいます。
サーバーに負荷がかかり処理スピードが落ちるとさらに音の遅延が発生してしまうことにもなります。

このように、実際に実装を行おうとすると多くの問題があることがわかりました。
ウェブベースの音楽制作アプリケーション開発の第一歩はこれらの問題をどうやって解決していくか、ということになります。

Webベースアプリケーション

音楽のソフトウェアに限らず、従来「ソフトウェア」といえばパソコン上にインストールして使用するのが当たり前でした。
しかし、最近FlashやAJAXなどの登場によってウェブベース・アプリケーションというものが少しずつ注目されるようになってきています。

最も有名な例は、Google Docs & Spreadsheetsでしょう。
使った事がある方もいらっしゃるかもしれませんが、ブラウザ上でWordのような文章作成・Excelのような表計算を行えるソフトウェアです。
Ajaxを用いた非常にすぐれたインターフェイスを持っていて、操作性は通常のパソコンにインストールして使用するオフィスソフトと大差ありません。

勿論、ファイルの保存・読み込みもできるのですが、ここにウェブベースアプリケーションならではの大きな特徴が存在します。
作成した文書や表はローカルハードディスクに保存されるのではなく、サーバー上に保存されます。
そのため、例えば家でファイルを作成してそれを会社や学校で開きたい、などといったときにわざわざファイルをUSBメモリーにコピーしたりメールで転送したりしなくても、インターネットにつながったパソコンからGoogleにログインして、Docs & Spreadsheetsを開くだけでファイルを開くことができるのです。

さらに、アプリケーションによっては作ったファイルを友人やチームのメンバー、あるいは全然知らないけどそのファイルに興味を持った世界中の人と共有することも簡単にできます。

また、ウェブベースアプリケーションは基本的にブラウザが入っていればソフトウェアをインストールしなくてもつかえるため、最新のブラウザがはいってネットにつながっているパソコンであればほとんどの場合「ログイン」するだけで使用できます。(※ブラウザ依存するアプリケーション、プラグインを必要とするアプリケーションもあります)

このように従来のアプリケーションとは異なる性質を持つウェブアプリケーションは、音楽製作の場においても新しい可能性をもたらしてくれるのではないかと思います。
実際、世界中でも既にその可能性に気づいた方がいろいろなアプリケーションの開発・研究を始められているようです。
しかし、ウェブベースアプリケーションにもデメリットが無いわけではなく、実際にブラウザ上で動く音楽製作ツールの開発は予想以上に大変そうだということがわかってきました。

参考:
Google Docs & Spreadsheets
http://docs.google.com/

ウェブベースの音楽制作アプリケーションの可能性

今まで、インターネットを利用した音楽制作手段がなかったわけではありません。
DAWが普及した現在、プロジェクトのデータを転送すれば、遠隔地のスタジオや自宅などどこでも音楽制作を行うことができます。
スタジオでドラムトラックを録音し、そのデータをベーシストの自宅に転送しベーシストがベースを自宅で録音し重ねる…そのような作業はもはや珍しいものではありません。

しかし、僕がここで述べているWeb2.0時代のウェブベースの音楽制作のスタイルはそれとは異なります。
従来の音楽制作のスタイルが個人・あるいはバンドメンバーなどの限られたメンバーによって作業が進められていくのに対し、Web2.0時代のウェブベースの音楽制作においては不特定多数のメンバーによって作業が進められていきます。
いわば、音楽のWikiみたいなものです。

音楽製作ツールがウェブベースになった場合の、従来のツールとの違いは下記のようなものになると考えています。

ユーザ側

リソースの再利用性の向上
リズムループなどの汎用性のある素材を共有しやすい
コラボレーションの促進
作業に必要なデータが全てサーバー上に存在しているため、他の人が手を加えやすい
また、OSやブラウザに依存しないアプリケーションを開発すれば違うOSのユーザ間でもコラボレーションしやすい
入門者への敷居の低下
ソフトウェアや機材を導入・セットアップしなくてもブラウザがあればすぐに開始できる
他のサービス等との連携
XML通信などを活用して、他のウェブページ・サービス等と連携させることができる
マスの力を利用した新たな音楽の創造
ウェブサイトを訪れた何千・何万というユーザの手によって完成していく音楽作品など、従来の一人・少人数での音楽制作とは異なる制作スタイルを実現できる
ソフトウェア開発者側

フィードバックを得やすい
実際に自分が作ったソフトがどのように制作に活用されているのかを把握しやすく、改良・機能追加に活かしやすい
バグ修正・バージョンアップが容易
従来のソフトの場合、バグ修正などで新しいバージョンのソフトをリリースしても、それがユーザの手元に届くまでは時間がかかった
勿論、これらは現時点で僕が考えている可能性であり、実際にウェブベースの音楽製作ツールの開発・研究が進むにつれ新しい可能性が見つかったり、逆に実現できなかったり効果が現れない可能性も多いにあると思います。
しかし、これらはWeb2.0時代が到来したからこそ実現の可能性が見えてきた新しい可能性であり、試してみる価値があるのではないかと思っています。

Web2.0と音楽の研究

自分が音楽ツールの開発を始めてから既に3年がたちました。
MTR、新感覚作曲ソフト、リズムマシーンなど色々なソフトウェアを作ってきましたが、梅田望夫氏の「ウェブ進化論」を読んだあたりから、これからは音楽製作もウェブベースで実現できたほうが面白いのではないかと思うようになり、今年の春あたりから本格的にウェブベースの音楽製作ツールの開発・研究を開始しました。

いざ、音楽ソフトウェアをウェブベースで作ろうと思ったのはよいのですが、実際に設計・実装を始めるとやたら問題が多かったり、調べても必要な情報があまり見つからなかったりしたので、ここでは自分が直面した問題や研究の過程でみつけたWeb2.0、コンピュータミュージックに関する興味深い情報を紹介したり、Web2.0・音楽について考えてみたり、その他諸々を書いていこうと思います。

コンピュータを用いた音楽製作といえば、DTM(DeskTop Music)という言葉があるように個々のパソコンにソフトウェアをインストールしたり機材を接続して作業を行うのが一般的です。Kreuz45.comで公開してきたSP-DiaやeasyMTR、SP-Rhythmなどのソフトウェアもすべて個々のパソコン上にインストールして音楽製作を楽しむソフトウェアです。

僕自身も音楽製作をするときは、自作のこれらのソフト以外にも市販のソフトウェア・機材を使ってパソコン上で作業をしています。すばらしいソフトウェア・機材が安価あるいは無料で手に入る時代ですし、パソコン一台で楽しめる音楽製作の幅は非常に広いのではないかと思います。実際、プロのようなクオリティの作品を自宅のパソコン一台で作られてしまう方もたくさんいます。

僕が今開発・研究を進めているウェブベースの音楽製作スタイルはこれらの従来のコンピュータを用いた音楽製作スタイルを否定するものではありません。しかし、ウェブベースで音楽製作をするという新しいスタイルによって、従来の音楽製作のスタイルでは思いつかなかったような新しい音楽の形が見えてくるのではないか、と考えています。

では、具体的なウェブベースの音楽製作スタイルとはどういうものなのか、今考えている内容をこれからご紹介したいと思います。