技術情報ということのものではないですが、備忘録もかねて、スキを見てメモ書き程度にまとめていこうと思います。
ページ内コンテンツ
開発環境&実行環境
- Magome サーバー及びクライアントアプリ
- WindowsXP (32bit,64bit) 以降
- VisualStudio2008(VisualC++9.0) SP1 Standard 以上 - MFC 使用 - 32bit ビルド
- Web サーバー
- LAMP("L"ではなくFreeBSD(なのでFAMP?)。PHP5.x。MySQL5.x) + XOOPS Cube
VST
- VSTSDK2.4 を使用。3.0系は未調査、未着手。
- 規格上かなりローレベルなインターフェースなので、VST によって NG なお作法などがある。特にスレッドについての取り決めはかなり緩そう。
- メンテされている VST プラグインであれば、排他処理やスレッド管理をしっかりとしてそうなので、ホスト側をどう組んでも動いてくれそうだけど、そうでもない VST プラグインが存在していそう。
- VST ホスト処理として安全に組むなら、全てのインターフェースを1つのスレッドでのみ使うのがいいんだろうが、オーディオ処理系と設定画面(UI)系を同じスレッドで処理するのは、パフォーマンス的に厳しそうなので、そこは分けるしかなさそう。
- なので、VST ホスト処理としては、cubase とかの有名アプリではそうしているであろう挙動に合わせていくのが正解っぽい。
- もしかしたら世の VST ホストアプリの中には、特定プラグインの場合には特別な処理をするとか、そういう継ぎ接ぎっぽいことをしているものもあるのかも。
複数の出力デバイスの同時再生
- Magome 内部の再生エンジンは、 複数のオーディオ出力デバイスから、同時に音を出すことを可能にしている。
- ASIO も DirectSound も混在して同時に使うことが可能。がしかし、同時に使った際にデバイスによる時間のズレをどう吸収するのがよいのか。(とりあえず手元のデバイスでは、複数デバイスのズレが気になることはないが、理屈上は有りえそう。)
- Magome では、PC の高分解能カウンタをマスターとして使う。もし PC のカウンタとそれぞれのデバイスのカウンタ(時間)にズレが出てきたら、PCのカウンタに合うように発声のタイミングを調整する。
- PC の機種によっては高分解能カウンタはアテにならないということもあるようだが、昨今のPCなら問題なさそうな気配がするので気にせず使用。
boost::asio
- Winsock をなるべく直接は使わず boost::asio のお世話になっている。が、通信以外でも、非同期IFとしての利用にも便利。
- Web サーバーのとの通信には基本的に使わない。Magome サーバーとクライアントアプリ間の通信で使用。(Web サーバーとのやり取りは IE コンポーネントを利用。)
cairo
- 描画処理で使用。Win32API(GDI)を出来るだけ直接使わないように。
- メモリリーク?
- 使っていくうちにメモリを切迫していくようなものではなさそうだけど、アプリ終了時にメモリ解放してないように見受けられる箇所があるっぽい。OSのプロセス終了によりメモリ解放を期待しているってことなんだろうか。それとも当方の使い方が悪いのか。他で cairo を使っているアプリ(GTK+とか)はどうしているんだろう。
アプリケーションの自動更新
- アプリ起動時にサーバーのファイルを参照して、新しくなっていれば、ダウンロードして自身を置き換える。
- サーバー上の zip ファイルを参照する。フル版とかアップデート版とかの区別はナシ。(リリース時の手間やミスを減らす為、ファイルを zip で圧縮してサーバーにアップすればリリース完了という仕組み)
- zip ファイルのヘッダにあるハッシュ値と、ローカルファイルのハッシュ値を比較して要更新かを判断する。zip のヘッダ箇所だけで判断可能にすることで無駄な通信を行わないようにしている。
ぺージ情報 | |
---|---|
ぺージ名 : | 技術情報 |
ページ別名 : | 未設定 |
ページ作成 : | Magome開発元 |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | なし |
ユーザー : | なし |
Counter: 886,
today: 1,
yesterday: 0
初版日時: 2014-09-28 (日) 17:13:23
最終更新: 2015-11-03 (火) 19:05:35 (JST) (3090d) by Magome開発元