December 2011 Archives

tsukimi on android

| No Comments | No TrackBacks

昨日、processingの最新版はAndroidでも動作するらしい、という記事を見かけたので、自分にはtsukimiという自分の実装があるんだからそれを使ってC#で動かせるはずだし難しくないはずだと思い立って、挑戦してみることにした。

ただ、実際に移植してみると、tsukimiはSilverlight 2.0の頃に作られたものなので、いろいろと古いし制約が大きい。WritableBitmapは存在していなかったし、Linqのexpression treeもかろうじて存在していただけで、また詳しくもなかったので、コード生成は別途行っていた。

まず、tsukimiのWPF/Eベースの描画バックエンドを、SurfaceViewに移植するところから始めることになった。SurfaceViewは2年ほど前にちょっといじった程度で、もう覚えていない。適当にAPIを眺めながら実装した。

そしてアプリケーションのスタートアップの仕組みが、Silverlightとは異なるので、その辺りを試行錯誤しながら実装した。ここが一番ハマったと思う。結局今はSurfaceViewの派生クラスもActivityの派生クラスも作成して、その上にユーザーコードを派生させるという仕組みになっているのだけど、そうでない状態で動かなかったからそうしているだけで、改善の余地は大きい。

誰でも使える実装ができたわけではないけど、とりあえず1つだけサンプルが動いて、仕組みとして動くらしいことは分かったので、後は他のタスクを優先して、気が向いた時に改善しようと思う。

vocaloid-connector ... is suspended

| No Comments | No TrackBacks

Vocaloid3には新しくJob Pluginという機能が追加されていて、これはLuaで書かれたスクリプトを実行できるようになっている。これが出来ることが非常に限られていて、実のところ全く使い物にならないエディタ上の編集作業を補助する程度の存在なのだけど、Vocaloid3はVocaloid2に比べて実用性が大きく後退していて、ReWireやRealtime VST pluginが消滅してしまっている。まともな編集作業はこのJob pluginを経由してしか行えないと考えた方が良いようだ。

それならば、いっそ外部からJob plugin APIを汎用的に操作できるようなライブラリをC#で作って、LuaSocketと通信して命令を送り込むようにしたら良いのではないか、と思って、1日ちょいでやっつけでC#のインターフェースとソケットベースの実装を作ってみた

先にクライアントのコードをでっちあげてから、ホスト側のluaコードを書こうという段になってPCを修理に出さなければならなくなってしまって、様々な不幸が重なって結局戻ってきたのが1ヶ月も後になってしまって、その間すっかり更新が止まってしまったのだけど、今日になってようやく作業を再開してホスト側に手を付けてみた。

それで初めて気がついたのだけど、どうもluasocketをうまくrequire()で呼び出すことができない。Luaスクリプトを組むのは初めてなので、使い方が分かっていない可能性も大いにあるのだけど、ホスト側がvocaloid editorなので、外部モジュールを読み込めるようになっていないのかもしれない(そういう高度な例を示すスクリプトの例は何一つ見つからなかった)。

そんなわけで、とりあえずこのLua環境でluasocketが使えるようになるまで、この方面の作業は中断ということにしておこうと思う。