Javaでカラオケって何だ? 月刊のに子マガジン12月号

Javaでカラオケって何だ?


 そろそろ12月、ボーネンカイ(*)のシーズンですね。飲み過ぎ及びメタボ予防のためには、2次会はラーメン食ったり飲み直したりするより、カラオケがいいと思います。
ワタシも大学にいたころはときどきカラオケ行きましたけど「365歩のマーチ」と「どうにもとまらない」がペットソングでした。今はというとギタリストですからあまり行きたいとは思いません(*)。でも日本から発祥した世界的な文化として、大切にするべきだとももいます。
さて今回ののに子マガジンはそんな季節柄もあって興味を持った「Javaでカラオケプロジェクト」の話ですが、実はあまり「結果」をお見せできないのが残念です。というのもカラオケってやつぁ著作権の問題がからんでくるからです。でもやっぱり曲を作ったり詞を書いたり(*)する人の苦労を考えるとしょうがないところもあるでしょう。



*ボーネンカイ:大学の図書館の机に「Wo wohnen Sie?(あなたはどこで忘年会をしますか)」という訳つきの落書きがあってタイヘン気にいったことがある。
*あまり行きたいとは思いません:月刊誌「ヤングギター」でおなじみのシンコー・ミュージック・エンターテイメント(株)で「オケメタル」というバンドからギターだけ抜いたCDつきの楽譜集を出していて、そのミスマッチ感の絶妙なタイトルには敬服するのみだが、ゼヒカラオケボックスで採用してほしい。
*詞を書いたり:いや、日本語に直すと意味わかんねとかそもそも意味あんのかとか(ガンマ某とか)、とかやたらに喧嘩売ってるだけとかみたいなのもあるようだけど、作品は作品だ。



JavaでカラオケでSourceforge?

 発端は、「Sourceforge.net」でJava のプロジェクトを調べていたら「Javaでカラオケ」というのが見つかったことだ。

jOkeyプロジェクト

 名前からしてタイヘンオッケーな感じのプロジェクトだが、わたしゃてっきり、カラオケといえばその発祥である日本か、今や日本以上に盛り上がっている中国などのプロジェクトかと思ってそのプロジェクトサイトに行ってみると、開発者の名前は欧米系だ。

 デモが公開されていたのでアクセスしてみると、こういうことだったのだ。  それはアプレットなのだが、音楽が鳴ると同時に画面に歌詞が表示され、音楽の進行にしたがって歌詞の色が変わっていく。音楽のほうは、手作り感の高いピコピコサウンドだ。  サンプルの曲にはセリーヌディオンとか、セーラームーンのテーマとかあってまさに「著作権ダイジョブか」という感じだが、「これらの例はあくまで教育用、デモ用です」と断ってあるところを見ると、やっぱり配慮しているんだろう。




音楽に合わせて文字の色が変わっていくだけだが、実はコレが深かった


わざわざ「Java」が必要な理由

 アヒャヒャそういうことか、でも何でわざわざ「Java」なんだ?そんなのムービー作成ツールで作りぁいいじゃん、と思った。
 そこで、プロジェクトサイトの「FAQ」ページに行ってみた。この「FAQ」の最後には「Q:ワタシは魅力的な若い女性でアナタとデュエットしたいのですが A:OK,メアドはココだよ」というようなことが書かれているのがタイヘンほほえましい(*)感じがしたが、それは置いといて「このプロジェクトでは「KAR」ファイルを再生する」と書いてあった。

「KAR」ファイルって何だ?

 調べてみると、それはMIDIファイルで、拡張子が.MIDなヤツと同じなんだそうだ。
MIDIファイルというのは生音ではなく演奏データを記述したファイルで、そのデータの中に歌詞も書き込まれている拡張版がKARファイルというわけだ。
 このようなKARファイルを解析して、歌詞データを取り出して画面に表示し、演奏データを再生しつつ曲の進行に伴った歌詞の彩色をする、そういったことをJavaでやるわけなのだ。

なーるほど

 と思った。
 「日本では、カラオケマニアのほとんどはすでに歌詞を『知っている』。大切なのは『カラのオケ』だけと言ってよいだろう。歌詞の表示などは「おまけサービス」に過ぎない....」
 そう思っていたが、実はかように結構な技術だったのだ。それを知ったワタシはさらに「カラオケソフトウェア」について調べてみることにした。



*ほほえましい:「フフッこのジョークはオオウケに違いない」とか思いながら書いたのだろうか。


世界的Javaカラオケプロジェクトはおフランス製

 すると、「Javaでカラオケ」というプロジェクトがさらに見つかった。それも、タイヘン有名らしく、他のいろいろなサイトで紹介されている。それは「Plarpebu」という、何て読めばいいのかわからないプロジェクトだ。プ、プラーペブ?おまけに、ドメインは「.fr」。つまり開発元はフランスだ。

  Plarbebuホームページ

動作中のスクリーンショットにも、歌詞表示画面にあるのはフランス語で、わからん(*)と思った。



*わからん:ワタシが知ってるフランスのポップミュージックと言えば2コ上の姉がきいてたミッシェルポルナレフ、ジュリアンクレール、パトリックジュベと、あとソフトマシーンくらいのものだったが、最近アダージョという若手のシンフォニックスピードちょいデス系がタイヘン気に入った。


なんとNetBeansのプロジェクトだった

 だがとにかくダウンロードしてみた。上記のホムペからリンクできるが直リンは

Sourceforgeだった

plarpebu-1.0.zipというファイルが得られる。  コイツを展開すると、「plarpebu 1.0 release sourceforge」というフォルダができる。「SolarisなどのGnomeで」展開すると、まず「plarpebu-1.0.zip_FILES」というフォルダができるが、その中にある。  その「plarpebu 1.0 release sourceforge」という、空白だらけでネットワーク上でやりとりするのがタイヘン怖そうなフォルダを開けると、「plarpebu」「source」という2個のフォルダができる。「plarpebu」のフォルダを開けると、ややややや。「nbjproject」というフォルダがあるじゃないか。イヤわたし、まだ何もやってないです。ただ開けたらあったんです。




こっちがさわりもしないのに「nbproject」というフォルダが

「これはもしや」
 フォルダには、ビルドや実行の方法を書いた文書があるけれど、ワタシは迷わずNetBeansを立ち上げた(*)。ただしゴメソまだ5.5.1だ。6もゲットしてあるんだけどまた今度ネ。



*迷わずNetBeansを立ち上げた:このためには日頃から迷わずNetBeansをインストールしておくことが必要である。そもそも迷わずSolaris Express Developer Editionを使っていれば、全て問題ない。


NetBeans5.5.1で即実行

 まず、この「plarpebu」フォルダを適当な場所たとえば「/export/home/noniko/java/plarpebu」みたくコピーしてやる。  それからNetBeansで「ファイル」>「プロジェクトを開く」(*)を選ぶ。




「プロジェクトを開く」を選ぶ

 ファイル参照画面でプロジェクトの場所を探す。たとえば/export/home/noniko/javaを開くとホラそこにおいた「plarpebu」フォルダのアイコンにプロジェクトのマークがついている。コイツを指定して開く。




「plarpebu」フォルダにプロジェクトのマークがついていた。ええワタシは何もしておりません。

 ギャ!このヅャイアントロボのようなアイコンがひとつペタと出てくるのは、「既存のAntを利用したプロジェクト」だ。大丈夫かな。




蟻の絵らしいが、ヲカッパアタマの二足歩行体のように見えるこのアイコンは

 だがやってみる分には減るもんじゃない。右クリックして「プロジェクトを実行」だ。




右クリックで選べるなら選んだって減るもんじゃねぇ

 するとおおッ!スプラッシュ画面が現れた。出力ウィンドウに赤字がズラズラ出てて穏やかじゃないけど、読んでみると「情報」と書いてある。特に「trouvé(eにアクサンテギュ)」という単語が何度も出てくるのが「trouble」に見えてとてもイヤだ。でも上がった。




出力ウィンドウが真っ赤になるのはイヤだけど

 本体は一番上の制御画面ぽいヤツだ。真ん中にあるのはいわゆる「イコライザー」というヤツで、かなり大仰だ。その下にプレイリストがある。
 横にひとつある窓に、歌詞が表示されるわけだ。




ものものしいカラオケ・プレイヤー

 本体のメニューから「Add Files」を選び、カラオケファイルを選べばいいのだろうが、これが実は問題だ。結論を言えば、今回はお見せできません。ゴメンナサイ。
 というのも、その辺で「フリーダウンロードカラオケファイル」と言っているダウンロードサイトが、本当にリーガルにフリーなものかどうか(*)判断がイマイチつかないからだ。
 だから自分で作詞作曲したMIDIファイルを作れば堂々公開できるわけだが、あいにくそこんとこはまだ勉強してない。でも最近そのへんの分野に興味が出てきたので、別の機会に作ってみようと思っている。
てなわけで、このあとは、このカラオケ・ソフトウェア問題で調べた技術的な話を少し。



*「プロジェクトを開く」:いろいろなソフトウェアにおいて、案外使わないコマンドだ。というのは一度新規作成したプロジェクトはプロジェクトリストに起きっぱなしにしておくのが普通だからだ。特に、新規の開発ツールとかでこれっていったいどうやって使うのと途方にくれているときにこのコマンドを目にすると「また作ってねえつってんだろ」とムカついたりする。
*本当にリーガルにフリーなものかどうか:こうした「フリーダウンロードサイト」は、リンク先に行ってみるとすでに閉鎖されているものがタイヘン多い。また、「ホームページ」と「エンターページ」が別にあって、「リンクを貼る場合は必ずエンターページにしてください、ホームページは頻繁に移動します」と書いてあるものもある。なぜ頻繁に移動しなければならないのか考えるとタイヘン怪しい。



CD-Gカラオケソフトって?

「カラオケファイル」ってどんなもんなんだろうと調べたワタシは、「CD-Gカラオケソフト」というものが通販で売られているのを見つけた。「テレビと接続して絵が出る」と書いてある。
 さらに、「カラオケファイル」で調べると「CD-G」とか「CDG」とか「CD+G」とかいう言葉が出てくる。
 これ、読んで字のごとし「CD+グラフィック(*)」のことだ。音楽CD(パソコンのデータCDではなくて)の 「CD-DA」の拡張規格で、単に音楽CDに画像ファイルもつっこめる(それはCD-EXTRA(*)という、音楽部分とデータ部分を分けた規格だ)というのではなく、1セクタが何チャネルに分かれていてそこに音楽データを書き込む部分と画像データを書き込む部分があるという微細構造的なものだ。
 だから1曲のうちの微細な音楽データにつき微細な画像データが対応し、総じて1曲に対して1個の動画が再生され得ることになる。
 まさにパラパラマンガだ。紙1枚につき1個の絵が書いてあるから、一束を高速でめくることでパラパラと音が出ると同時に絵が動く。一束めくり終わったら動画も終わる。
 だから「カラオケの歌詞表示に使われる規格」と言ってほぼ間違いない(そのために作られたわけではないと思うが...)
 KARファイルは生音ではないので再生装置によって音の善し悪しが変わる。でもCD+Gは生音だからどこでかけても同じだ。ちなみに、普通のCDプレイヤーでかけても、音楽だけが再生されるだけで支障はないという。



*CD+グラフィック:「CD-G」も別にCDからグラフィックを差し引いたわけではなく、なんかこう区切りっぽくつけたハイフンだと思われる。ちなみに、ワタシが見た通販サイトではハイフンに全角のマイナスを使っていたので、ブラウザによっては文字化けした。
*CD-EXTRA:最近Primal FearというドイツのバンドのCDがコレを出している。データはプロモ映像で、再生するとデカい野郎どもが弾きまくってる後ろで薄着のおねいさんたちがクネクネ踊ってたりする思想がいまひとつ不明な映像が流れる。



カラオケソフトウェアは外国の文化?

 このCD-G, 「CD+G」という名称で、

英語のWikipedia

に詳細な説明がある。これにはドイツ・フランス・ポーランド・フィンランド及び中国語の訳があるが、なんと日本語訳がない(*)。
日本ではそうした著作権上の問題もあるし、何より営業カラオケスタジオがたくさんある。ワタシが毎日買い物に行く途上にも、カラオケスナックとスタジオがひとつずつあって、前者のほうからは常にそれっぽい音楽が漏れている。そんなわけで、「自宅のパソコンでカラオケ」という必要があまりないみたいだ。
ところが外国では「市販カラオケメディア」がバンバン売られているようだ。たとえば以下のURLは、カラオケボックスを経営しつつメディアも売っている。おりしもクリスマスシーズンなのでクリスマスカラオケの大キャンペーン中だった。

Karaoke Warehouse

 ここで売られているのがCD+Gメディアだ。
 さてこのCD+Gメディアの再生装置、例の「テレビにつなぐと歌詞が出る」専用の装置も外国では、たとえばKaraoke Warehouseでは当然のように売っている。だがコレをパソコンで再生するためのソフトもWindows版を中心にたくさんあり、それもやっぱりKaraoke Warehouseで当然のように売っている。jOkeyやPlarpebuは、ただ(と言っては失礼だが)それをオープンソースで、プラットフォーム依存なしに提供しようというプロジェクトなわけだ。



*日本語訳がない:日本のWikipediaのは「CD-DA」及び「CD-EXTRA」の説明はあるのにそこからのリンクもないってことはホントにないんだろう。


「カラオケソフト論」までついているPythonカラオケプレイヤー

 オープンソースのカラオケプレイヤーと言えば、実は「PyKaraoke」というPythonプログラムがあって、Debianのパッケージなどにも採用されているようだ。

PyKaraoke - Python Powered Karaoke

 同様手元にカラオケファイルというものがないので実際に使ってはいないが、ワタシが紹介したいのは、いかにこの開発者が「Karaoke」に熱い思いを抱いているかということだ。上記サイトでは以下のPDFに、開発者のひとりがいかにしてこのプロジェクトを立ち上げるに至ったかなどを記してある。

Karaoke on Linux

 これが、ドイツ・スペイン・ポーランド・チェコ語にも訳されている。そこには、「以前はパソコンでカラオケをプレイするにはWindows版のソフトしかなく、そのためにWindowsとのデュアルブート環境を強いられていた。そこでLinuxにて動くソフトを自分で作成...」みたいなことが書かれている。カラオケのためにデュアルブート環境を構築というその気持ちだ(楠みちはる先生風)


カラオケファイル作成ソフト

 では、カラオケファイルを作成するソフトはというと、これも外国ではたとえば以下のような市販品が売られている。

Karaoke CD+G Creator

 「CD+G」形式のファイルを作成するためのものだ。
 興味があるのは、「いったい、CD+Gで、カラオケの曲の進行に合わせて歌詞の色がつくあれってどうやって作ってるの?」ということではないだろうか。少なくともこうした家庭用のソフトについては、調べた結果わかった。

手動なのだ

 以下のような感じだ。まず、音楽ファイルを指定する。次に、その歌詞を書いたテキストファイルを指定する。それから、テキストが画面に表示されかつ音楽ファイルが再生される中、ユーザが曲の進行に合わせてキーを押してテキストの彩色をコントロールするのだ。




歌詞の彩色はユーザが曲を聴きながら手動で指定する

 ただし、こうした「正規の対価を払ったツール」を使用したとしても、それでもって著作権を侵害するようなファイルを作るのはやはりイケナイことなのだ。チュマンナイかも知れないが自分で作った曲に自分で作った歌詞を当ててみるにとどめなければなるまい。


カラでなくてもいいじゃないか

 一方、音源をチョクで編集してヴォーカルだけ抜く、という方法も見かける。「疑似カラオケソフト」という種類になるらしい。驚くべきは、MSDNさんでも「Media Player SDK」を使用して、「カラオケを作成する」技術文書を出している。

Creating Karaoke, Windows Media Player Style

 あーハイもう難しいんで内容はわかりません。でもカラオケがMSDNさんにまで認められた文化だということがわかる。

 しかし、歌手の人の立場で見るとどうなんだろう。特に、原曲から歌だけ抜く、という行為には、「オマエの歌はひっこんでろ、俺が歌う」と言われているような印象を受けやしないだろうか。いや、多くの人はカラオケを楽しみたいというだけでそんな意図はないだろう。でもちょっと考え方を変えて、そこまでするよりは、そのまんまの音源で一緒に歌ったっていいんじゃないだろうか。




歌手の人よりおっきい声で歌えば、カラオケと同じ(修学旅行夜の思い出)

 一方ワタシは本当にそう思うこともある。ギターは超カッケーのに歌メロがナヨいファイヤーウィ某とかネヴァー某とか、歌メロはいいのに歌手がヘタなセレス某とか、タイヘンよいギタリストなのにヘタな歌をやけに歌いたがるイング某とかスティーブハ某とかグレンティ某とか「てめェ歌抜くかゴラ」と明らかな意図を抱くこともある。でもいっしょに、ヘタなところも(*)きめ細かに再現して歌っている。



*ヘタなところも:彼はなぜヘタなのか、どこがヘタなのかをつきとめ、再現するのはなかなか難しい。同じようにヘタ味を出せると、達成感があったりする。


日本で「Javaとカラオケ」と言えばこっちだ

 実は、「Java Karaoke」でググっていたらこんなヒットがあって仰天した。

産業技術総合研究所グリッド研究センター 研究成果リポジトリ

 「こんな」とは失礼したが、うちのダソナもよく出張に行く「産総研」の「グリッド」の研究で、そんな親しみやすいテーマを?と思ったのだ。
 調べてみると、確かに「Karaoke Grid」という研究の成果が発表されている。これらのファーストオーサーである首藤一幸さんのパブリケーションリストに行くと、もっと詳しい説明が見られる。

Shudo's Publications: Access Grid

基盤になっているのは「Access Grid」というグリッド構築技術で、「Karaoke Grid」はそのエンターテインメントへの応用ケースだ。
最近のグリッド構築ではOGSAのようなWebサービスベースの技術が高い評価を受けている。WebサービスといえばJavaが主要なエンジンだ。かくして、「Java Karaoke」のキーワードでヒットしたのだと思われる。
 さて、その「Karaoke Grid」はどんな様子かというと、 たとえば下記は米国と日本など、離れた場所で同時にカラオケを合唱しかつそれを鑑賞するというプロジェクトのスライドだ。

Karaoke Grid- A mode of Entertainment Grid

これはのに子観だが、カラオケへの応用は親しみやすい例であると同時に、グリッド構築のかなり精細な検証でもあるのではないだろうか。だってもし通信が遅かったり場所によってタイムラグがあったりとぎれたりしたら盛り上がらない。加えて、世界に日本の技術を日本の文化を用いて発信するというテーマ的にもタイヘンカッコイイものがある。首藤さん御指導ありがとうございました。今度ワタシも参加できるようにリッチーサンボラの楽譜探しておきます。


まとめ

今回の記事では以上のようなことを書いたつもりだ。

加えて、今回堂々と公開できるカラオケ・ファイルを自分で作成できなかったことが非常に残念だったので、ゼヒMIDIについて勉強を始めようというきっかけになった。と思ったらダソナがDTM(デスクトップミュージック)の本を一冊持っていたことが判明した。これから読むゼー。