トップページ > 過去ログ > 記事閲覧
リアルタイムに音を加工
名前:すえ 日時: 2012/12/27 04:39

こんにちは。 プログラム初心者の私でもDXライブラリは非常にわかりやすくいつもお世話になっております。 現在、ある音楽を流し、ボタンを押している間のみその音楽に加工を加え(エフェクトなど)出力するといった処理を作りたいと思っています。 ソフトウェアサウンドハンドルを使って波形を変形させる方法を試してみたのですが、この方法の場合プレイヤーに常に0.1秒ほどデータを格納しておかないといけないため、ボタンを押してから音が変化するまで最低でも0.1秒ほど待たないといけませんよね? このDXライブラリではラグをほとんど感じさせずこういった処理をすることは不可能なのでしょうか?

Page: 1 |

Re: リアルタイムに音を加工 ( No.1 )
名前:管理人 日時:2012/12/31 02:19

ストリーム再生を行っている他のソフトでは10msくらいまでラグを抑えられるのに、 DXライブラリのソフトウエアサウンドの場合は100msを切ると正常に再生されなくなっていたので、 色々修正+調整して10msまでラグを抑えられるようにしました よろしければその改良を加えたバージョンをお使いください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) ただ、メインループでAddDataSoftSoundPlayerを使用してサウンドデータを格納する場合は、 仕組み上メインループが60fpsで動作している場合は1ループに16.66666ms掛かるので、 格納するサウンドデータを10msにしてしまうと正常に再生されません なので、ラグを10msまで抑えたい場合は DxLib_Init の前に SetWaitVSyncFlag( FALSE ) ; を実行して ScreenFlip で VSYNC待ちをしないようにした上で、メインループを100fps以上で動作するようにしてください ( ただ、あまり現実的ではないので格納するデータを 20ms分くらいにした方が良いと思います ) あと、格納するデータを 20ms や 10ms にしますと再生データに予備が全くない状態となりますので、 少しでも処理落ちが発生してメインループが60fpsを切ると再生が乱れますのでご注意ください
Re: リアルタイムに音を加工 ( No.2 )
名前:すえ 日時:2012/12/31 21:58

お忙しい中ありがとうございますm(_ _)m これでやりたい処理が実現できると思います! 早速試してみようと思います、本当に助かりましたm(_ _)m

Page: 1 |