技術情報ということのものではないですが、備忘録もかねて、スキを見てメモ書き程度にまとめていこうと思います。 *開発環境&実行環境 [#j05b2a59] -Magome サーバー及びクライアントアプリ --WindowsXP (32bit,64bit) 以降 --VisualStudio2008(VisualC++9.0) SP1 Standard 以上 - MFC 使用 - 32bit ビルド -Web サーバー --LAMP("L"ではなくFreeBSD(なのでFAMP?)。PHP5.x。MySQL5.x) + XOOPS Cube *VST [#p59f6bae] -VSTSDK2.4 を使用。3.0系は未調査、未着手。 *ASIO [#v9a612fa] -ASIO SDK 2.1 を使用。 -レイテンシは小さい。けっこうローレベルな IF なので、自前で諸々処理が必要。 *DirectSound [#y41d8398] -レイテンシはそんなに大きくなさげ。デバイスをアプリで独占するわけでないので、MediaPlayer で MP3 を再生させつつ、VST の出力も再生するとかもできる。 *複数の出力デバイスの同時再生 [#v5c5c9e6] - Magome 内部の再生エンジンは、 複数のオーディオ出力デバイスから、同時に音を出すことを可能にしている。 - ASIO も DirectSound も混在して同時に使うことが可能。がしかし、同時に使った際にデバイスによる時間のズレをどう吸収するのがよいのか。(とりあえず手元のデバイスでは、複数デバイスのズレが気になることはないが、理屈上は有りえそう。) - Magome では、PC の高分解能カウンタをマスターとして使う。もし PC のカウンタとそれぞれのデバイスのカウンタ(時間)にズレが出てきたら、PCのカウンタに合うように発声のタイミングを調整する。 -- PC の機種によっては高分解能カウンタはアテにならないということもあるようだが、昨今のPCなら問題なさそうな気配がするので気にせず使用。 *MIDI [#d2400d1b] -Windows標準のMIDI音源はレイテンシがものすごく大きい。VST などと同時に再生させたときのズレを吸収させる工夫は要実装。 *boost [#we1e7980] -boost 1.56.0 を使用。 **boost::asio [#m0182c20] -Winsock をなるべく直接は使わず boost::asio のお世話になっている。が、通信以外でも、非同期IFとしての利用にも便利。 - Web サーバーのとの通信には基本的に使わない。Magome サーバーとクライアントアプリとの通信で使用。(Web サーバーとのやり取りは IE コンポーネントを利用。) *Webサーバー [#od6dba02] -自前サーバーで頑張るのは何かとコストがかかる為、よくある単純なレンタルサーバーで動作出来ることを念頭に置いている。現在はさくらのレンタルサーバーを利用している。 -HTTPS 通信を基本にしている。Facebook や twitter 認証(OAuth)を利用している手前、平文は避けたほうが無難。 **XOOPS Cube [#xc86e2f1] -Web サーバーの土台として利用。 -ユーザー(アカウント)の管理は Web サーバー(XOOPS Cube)の管轄。 -自作の Magome 用の管理モジュールを組み込んである。 -UserAgent を見て Magomeサーバーおよびクライアントからの接続の場合には、それぞれのアプリの組み込みブラウザ向けに適したページを出力する。 *SQLITE [#g4dd63ec] -Magome サーバーにて、楽曲データなどの管理で使用。 *アプリケーションの自動更新 [#g9e1d1ca] -アプリ起動時にサーバーのファイルを参照して、新しくなっていれば、ダウンロードして自身を置き換える。 -サーバー上の zip ファイルを参照する。フル版とかアップデート版とかの区別はナシ。(リリース時の手間やミスを減らす為、ファイルを zip で圧縮してサーバーにアップすればリリース完了という仕組み) -zip にあるハッシュ値と、ローカルファイルのハッシュ値を比較して要更新かを判断する。 *ループ再生 [#ha18f3bc] -時間の正確さを重視した作りを念頭に。 --ループ位置に巻き戻る処理では時間を止めずシームレス(ギャップレスっていうのかな?)に処理する。
(This host) = https://tr9.sakura.ne.jp