どうも、お久しぶりです。伊勢です。
さて、この1ヶ月、バイトとレポートに追われ、何もできなかった短大生活のせいで落ちた
プログラミングの腕を取り戻すため、黙々とコード書いてました。いわばリハビリ。
で、何を作ってたかというと「持ち込みカラオケシステム UGO」というものです。
からおけ会場にノートPC持ち込んで勝手につないで配信されてない曲を歌うってやつです。
このシステムにはMacですでに作られていて高機能なものがありますが、
公開される気配もないし、DirectX の勉強にもなるだろうと思い作ってます。
あ、名前は UGA と、過去に作った Oritatte という曲番号データベースシステムから取ってます。
ちなみに、Oritatte は、持ち込みシステムを含めた全カラオケの曲予約を
一つのリモコンでやろうという壮大な計画でした。
もちろんデータ量の多さに頓挫してしまいましたが…
今回は、開発中のシステムを画像付きでご紹介します。
あ、お約束ですが、画面はすべて開発中のものです。
完成版はうちの社長の協力でもっと見た目がよくなる予定です。
まず、システムの概要を以下の図に示します。
UGOは、以下の2つのシステムで構成されます。
・曲データの再生、画面の表示、新曲配信処理を司る「サーバー」(C++で書かれたアプリ)
・曲の検索、予約などのデータベースを司る「サテライト」(Rubyで書かれたCGI)
主に、携帯電話でサテライトに接続して曲の予約、
会場内に持ち込んだノートPCなどにAIR-EDGEなどのパケット定額な何かを繋ぎ、サテライトと通信させる運用を考えています。
こうすることによって、ノートPCを持たない人でも参加できます。
ちなみに1回の通信で発生する通信料は多くても5KB程度を予想していて、
WINでもパケット割WINミドルに加入すれば、500曲歌っても、以下のようにわりかし実用的な価格となります(実測はまだしてませんが)。
5[Kbytes] = 40 [パケット] (1[パケット] = 128[bytes])
40[パケット] * 500[曲] * 0.01575[円(税込)] = 315 [円]
実際の運用は、まず、テレビなどにサーバーのノートPCをつなぎ、サーバーを起動させます。
サーバーは起動すると、サテライトにログイン信号を送った後、タイトル画面が表示されます。
この後、ユーザーは携帯端末などでサテライトへログインします。
(画面はPC向けのものです)
サテライトにログインしたら、検索を選び、歌いたい曲を探します。
歌いたい曲が決まれば、「予約」します。
曲が予約されると、自分の予約リストに追加されます。
演奏中の曲が終わる(待機中の場合は一定時間経過する)と、サーバーはサテライトに予約曲の一覧を取りに行きます。
この画面のあと、曲の演奏が始まります。
なお、予約リストの自分の手持ち曲の順番は自由に変えることができます。
また、サテライトの設定を変えておくと、予約された順番ではなく、ユーザー順に予約を再生します。
これにより、歌う曲数の不公平がなくなります。
そして、UGO では「おたのしみ」としておなじみの「伏せ予約」。
コレを入れておくと再生が始まるまで何の曲を入れたか他の人にはわからなくすることができます。
(画面には「(ナイショ)」と表示されます)
新曲の登録はサーバーの新曲フォルダに入れておくと、予約曲一覧を取りに行く前に曲フォルダへ移動して、
サテライトのデータベースに登録して、以下の画面を表示してくれます。
からおけ会場内にLANを配せば、歌っているときでも曲を追加できます。
その曲データはどうやって作るのかというと、Bulldog というアプリで行います。
こいつは C# 製です。
歌詞を打ち込んで、曲を聴きながらEnterを押していくだけで歌詞ファイルが出来上がりです。
----
さて、このシステムですが、肝心の曲再生部分が未完成なのです。
性質上、メディアファイルの再生位置をそこそこ正確に知る必要があるのですが、
使用しているライブラリに今のところその機能がないのです。
作者さんにお願いして、対応待ちをしているところです。
完成したら、オフに持ち込みますんで、みんなで歌います?(笑)