Brynhildr

KeroRemote

リモートデスクトップエンジニアのブログ。

謎が解けた。
長い間謎だった事がまた1つ明らかになりました。それは何かと言いますと、

音声伝送についてで御座います。

WindowsXP以前ですと、ステレオミキサーを利用してDirectSoundでスピーカー音の伝送が可能でした。録音して伝送して再生までのプロセスです。当然無音の時も無音のデータで伝送が可能です。ちなみになんでDirectSoundを使っているかと言いますと、昔々その昔、ゲームを作ってた事がありましてその名残で御座います。癖とゆーか安心するとゆーかなんかその辺にいるのが心地良いとゆーかそーゆー雰囲気です。

で、WindowsVista以降は、サウンドデバイス周りががらっと変わり、ステレオミキサーも使えないデバイスがほとんどで、DirectSoundではマイク音の録音しか出来ず、スピーカー音の録音が困難になりました。そこでCoreAudioとゆー新しい技術を利用して録音をする事にしました。これがBrynhildrで初めて実装されました。その後、MurakumoOrthrosでも実装され、遠隔地のWindowsパソコン上で鳴っているスピーカー音を別のWindowsパソコンで鳴らす事が出来るようになりました。

が、まだ解決していなかった問題が1つ。CoreAudioは、DirectSoundのように無音の際にデータを出力せず、無音時の処理が少々やっかいでした。これはひょっとするとパラメータで存在するのかもしれませんが、英語力の乏しい自分では見つける事が出来なかった次第で御座います、テヘペロ。で、なんとか無音時の際の処理をうまく誤魔化していたのですが、iOS版Orthrosの登場でちょっと困った事が発生します。

iOS版Orthrosは、CoreAudioを利用して音声を再生しています。CoreAudioが再度出て来ていますが、先述したものとは別のCoreAudioという紛らわしさです。こちらのCoreAudioはApple製で、あちらのCoreAudioはMicrosoft製で全く別物で御座います。で、これまでは何とか上手く出来ているかとは思っていましたが、音が連続で鳴っている時は問題無いのですが、無音状態がある場合に無音処理に上手く切り替わらない問題が潜在的に存在しておりました。Windows側で無音だった場合、データは出力されませんので当然通信データも流れません。そのタイミングを見計らってiOS側で無音処理させるという事が結構困難で御座いました。先人の方々は上手く作ってるなと思ってはおりましたが。

iOS版OrthrosのFree版は、24000Hzで音声を伝送しています。有料版は、8000Hz~48000Hzと変更が可能で、44100HzでCD音質になりますので高音質で音声が伝送出来ます。例えばワイヤレススピーカーやワイヤレスヘッドフォンといった使い方も出来るかと思います。そうなるとなるべく音質やノイズ除去には力を入れたいと思いますのは技術者の性でしょうか。何とかかんとか先人の方々の無音処理を実現出来ないかと夜な夜な模索し続けてはいたのですが、

何か出来たみたいです。

何でこの方法を思いつかず、いくつもの代替策とゆーか小手先の方法になってしまっていたのかとゆー事が悔やまれるのですが、アイデアってひょんなトコから生まれるもんですね。結果的にWindows側のCoreAudioをDirectSoundのよーに処理させる事が出来、iOS側のCoreAudioで行っていたちょっと複雑な処理がまるで不要になるとゆー何かもったいないよーな気がしますけど、そんなスタイルに生まれ変わったよーな感じです。とりあえず次期Windows版Orthrosには実装予定ですが、まだ微調整の必要があったりデバッグなどもありますんでもう少し様子をみたいと思いつつ、リリースしてからユーザーの皆様の反応をお聞きするといった感じでも良いかなとも思っていたりします。ここまで書いてみたのですが、

違いを実感出来る方は極々僅かだと思います。

環境や使い方や音声ソースなど色んな条件が揃わないと違いはわからないと思います。えぇ、自己満足レベルだったりします。Diablo3のDPSで言いますと、67000が67100になった的な。えぇ、今そのくらいです。インフェルノのブッチャーはソロで楽勝です。




コメントはまだありません ... ( 管理人承認制 )





... 不具合報告の際は、アプリのバージョンやOS等の動作環境の記載を御願い致します。

表記されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
当サイトはAmazon.co.jpアソシエイトプログラムに参加しています。
© 2010 IchiGeki