universeこれは旧ブログ。>>2008年01月22日dsound.dllに乗っかる技術的には出来るだろうとは思っていたものの、何となくやる気がなくてずっと未着手だったプログラムの実装テストなどをしていた。内容というのは実際にはとても簡単なものなのだが、ミキサーの設定に依存せず他のプログラムが鳴らす音を取り込む、というもの。不特定多数のプログラムに対してこれを実現しようと思うとかなり骨の折れる作業になるので、取り合えずターゲットにしたいプログラムを決めてそのソフトからの取り込みが正しく行えるかどうかというのを基準に作業した。結論から言うとかなり現実的なレベルでそれが可能だという事がわかった。使用してストリーミング再生、あるいは録音しているバッファの内容を盗み読みし、それをプロセス間通信で他のプロセスへ横流しする事で録音できる仕組みを作った。仕組み上どうしてもリサンプラーやミキサーが必要になるため状況次第でパフォーマンス問題は否めないものの、少なくともこの仕組みを利用する事でかなり多くの状況で役に立つプログラムが出来上がりそうだ。このプログラムが生きるのは主に様々な事情により録音デバイス自体が使えない場合である。書き込まれた内容自体を盗み読みするので劣化ゼロでデータを抽出出来るなど一応他のメリットもあるが、今回はそういう目的ではないのでその辺はあまり注目していない。録音ミキサーの使い方がわからなかったり、マイク入力に設定しており何らかの理由によりWaveMixが使えない、あるいは使いたくない場合にも録音できるわけなので、これはかなり需要があるプログラムだと思う。フックすれば、実際には録音していないはずの音をデータに混ぜ込む事も出来る。この機能もちゃんと扱おうと思えば相当なポテンシャルを持っていると思う。アプローチ自体は単純だが、かなり大きな一歩を踏み出せたように思える。|2007年11月14日スレッドプライオリティ残念ながらプログラミング関連の話題が続きます。スレッドプライオリティに関するあれこれ。スレッド周りの仕様はOSごとに仕組みがバラバラで、マルチプラットフォームで動くプログラムを作る際に結構壁になる事があるらしい。プライオリティ設定用コードが抜け落ちている。実装は比較的しっかりしているようだったのでそのコードを参考にしつつスレッド優先度の指定方法について簡単に調べた範囲内でまとめてみた。オーディオ周りを扱うプログラムを書こうと思った場合、リアルタイムな処理を行う時にスレッド優先度を上げておくことは大切だと思うのでそういう場合に役に立つかと思い自分のためにまとめた。eeffe8d8c4はてなでMML記法という素敵な機能が追加されていて、自分もちょっと試してみたいとは思ったもののはてなに移行するのも面倒臭いので、JSMMLを利用して似たような機能を作ってみた。以外のブラウザだったりとか、その他どんな環境で動くのかはちょっとわからないけども作った事に満足。使ってるので重いのかなあと思ったり思わなかったり。凄い時代になったなあ。使って変な遊びをした事がある。全盛期の頃はここに凝って色々なものを入れる人が居た。当時はあまり興味もなかったのだが、今更になって調べてみると頑張れば30fpsぐらいは出るという素晴らしい代物だった。液晶エミュレータを作り遊ぶための環境を整えてしまった。実機での動作画面ただ30fpsも出してしまうとほとんど余力なしの状態なので、多分BGMとか流す余裕とかはまったくなかったんじゃないかと思う(映像を出すところまでで満足してしまったので一緒に音を出すテストは残念ながらやっていない)。2.0Seesaaブログ。