トップページ > 記事閲覧
Android版: 同時発音数について
名前:MOR 日時: 2018/02/18 23:52

まず360個程度の音(ogg)をすべて読み込み、個別に順番に音を鳴らして、正常に読み込めていることを確認し、 そこから1つずつ同時に鳴らした時、15個までしか鳴らないように思います。(16番目の音が出ないので気が付いた。) 16番目の音を鳴らす直前に、鳴っている音を全てStopしてから16番目の音を鳴らすと音が出ました。 エミュレーター(Visual Studio Emulator (x86))と実機(3年以上前のもの)で同じような感じでした。 (聞こえた感じは若干違う感じでしたが、いずれにせよ発音制限はあった) これは、DXライブラリ側で制限がかかっているのでしょうか?それともOS側の仕様でしょうか?
メンテ

Page: 1 |

Re: Android版: 同時発音数について ( No.1 )
名前:管理人 日時:2018/02/19 01:00

すみません、プログラムのバグでDXライブラリ側で最大同時発音数を16に制限してしまっていました OSが対応していれば最大512個まで同時に発音できるように修正しましたので、よろしければお試しください m(_ _;m http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用
メンテ
Re: Android版: 同時発音数について ( No.2 )
名前:MOR 日時:2018/02/19 20:37

試してみたのですが、変化はありませんでした。 今回は362個のoggを一度に再生して直後に再生している数を調べてみましたが、やはり15でした。 エミュレータ(x86)も実機(ARM)も同じでした。ちなみにWindowsで同じことをやると362個すべて鳴っていました。 よくある「ファイルをダウンロードしたけどビルドに適用できていない」かと思って確認しましたが、 問題ないと思います。更新されたのはAndroid_x86では libDxLib.a 2018/02/19 00:35 のみですよね? このファイルをリネームするとビルドに失敗するので、更新は大丈夫だと思います。
メンテ
Re: Android版: 同時発音数について ( No.3 )
名前:管理人 日時:2018/02/20 00:53

私も手元のデバイス( F-02H )で試してみましたが、OSが対応している同時再生可能な数は 14 でした バグで 16個以上同時再生できないようになっていましたが、そもそもOSが対応している同時再生可能な数が 16未満だったようです (・・; MORさんの環境も OSが対応している同時再生可能な数が 15だったということだと思います 今後登場する、より高性能の端末では同時再生可能な数も増えていくと思いますが・・・
メンテ
Re: Android版: 同時発音数について ( No.4 )
名前:MOR(完了) 日時:2018/03/09 23:27

了解しました。残念ですが仕方ありません。 追記 2018/03/09 SoftSoundで組み直しました。
メンテ
Re: Android版: 同時発音数について ( No.5 )
名前:MOR 日時:2018/03/11 16:20

SoftSoundというものがあるのを知り、 ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=4338 を参考にして30音以上鳴らすことができました。 ただ、いろいろ問題もあり、1つ1つ検証・対策しているところです。 その中でまず気になったのですが、上記リンクの No.5 に書かれているサンプルの1つ目を 実行したとき、ストック0.1秒でも、0.5秒分にしても、ずっとプチノイズが出ていることです。 Windowsでは全く問題なかったと記憶していますが、Androidはこういうものなのでしょうか? (2.5分くらいのOGGをassetsに置き、x86高速エミュレーター(VisualStudio Emulator)で確認)
メンテ
Re: Android版: 同時発音数について ( No.6 )
名前:管理人 日時:2018/03/12 00:44

> ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=4338 >  > を参考にして30音以上鳴らすことができました。 こちらのURLはここ(『Android版: 同時発音数について』のスレッド )のURLのようです 申し訳ありませんが、正しい URL を載せていただけないでしょうか? m(_ _)m > その中でまず気になったのですが、上記リンクの No.5 に書かれているサンプルの1つ目を > 実行したとき、ストック0.1秒でも、0.5秒分にしても、ずっとプチノイズが出ていることです。 > Windowsでは全く問題なかったと記憶していますが、Androidはこういうものなのでしょうか? MORさんがご覧になられたスレッドを確認できていないので中途半端なご返答になりますが Android と Windows では SoftSound の Player のストックが消費される際の1回辺りの量が異なります Windows 環境では概ね 0.01秒単位で消費され、Android 環境では( 手元の環境では ) 0.05秒単位で 消費されるようです( これは OS のサウンド API に因るもので、Windows の方がより細かい単位で消費されます ) 一度に消費される時間が長くなればなるほど、ストックがそれ以下しかないと足りない分がプチノイズとして 『無音』が再生されることになります なので、消費されるストックの粒度が荒い Android の方が、大き目のストックを用意しておかないとプチノイズが 発生してしまうというわけです なので、以下のような『プレイヤーに 0.05秒( 20分の1秒 )単位でストックを追加しながら再生する』 プログラムを組んでみたところ、手元の環境ではエミュレーターでも実機( F-02H )でもぎりぎり プチノイズが入るか、入らないか、といったところでした( たまにプチプチ音がします ) #include "DxLib.h" #define ONE_ADD_SAMPLE_NUM (44100 / 20) int android_main( void ) { int SoftSoundHandle ; int TotalSampleNum ; int TotalAddSampleNum ; int AddSampleNum ; int SoftSoundPlayer ; if( DxLib_Init() < 0 ) { return -1 ; } // ソフトウエアサウンドとしてサウンドファイルを読み込み SoftSoundHandle = LoadSoftSound( "TestBGM.ogg" ) ; // サウンドの総サンプル数を取得しておく TotalSampleNum = GetSoftSoundSampleNum( SoftSoundHandle ) ; // プレイヤーの作成 SoftSoundPlayer = MakeSoftSoundPlayer( SoftSoundHandle ) ; // プレイヤーの再生開始 StartSoftSoundPlayer( SoftSoundPlayer ) ; SetDrawScreen( DX_SCREEN_BACK ) ; TotalAddSampleNum = 0 ; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; // プレイヤーのストックが20分の1秒以下になったら20分の1秒追加 if( GetStockDataLengthSoftSoundPlayer( SoftSoundPlayer ) < ONE_ADD_SAMPLE_NUM ) { if( TotalSampleNum - TotalAddSampleNum < ONE_ADD_SAMPLE_NUM ) { AddSampleNum = TotalSampleNum - TotalAddSampleNum ; } else { AddSampleNum = ONE_ADD_SAMPLE_NUM ; } if( AddSampleNum > 0 ) { AddDataSoftSoundPlayer( SoftSoundPlayer, SoftSoundHandle, TotalAddSampleNum, AddSampleNum ) ; TotalAddSampleNum += AddSampleNum ; } } // ストックされている時間を描画 DrawFormatString( 0, 0, GetColor(255,255,255), "GetStockDataLengthSoftSoundPlayer:%d", GetStockDataLengthSoftSoundPlayer( SoftSoundPlayer ) ) ; ScreenFlip() ; } DxLib_End() ; return -1 ; } 因みに少し話題から逸れてしまいますが、AddDataSoftSoundPlayer にバグがあり、既存のバージョンでは 上記のプログラムは正常に動作しません、申し訳ありませんが、よろしければこちらの修正版をお使いください m(_ _;m http://dxlib.o.oo7.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 http://dxlib.o.oo7.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 http://dxlib.o.oo7.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 http://dxlib.o.oo7.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 http://dxlib.o.oo7.jp/temp/DxLibDotNet.zip // Windows版 .NET用 http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用 http://dxlib.o.oo7.jp/temp/DxLibMakeTest.exe // ソース ( 中身を既存のライブラリのファイルに上書きして、VisualStudioをお使いの場合は『リビルド』を、  BCCをお使いの場合は『再構築』をして下さい ) ストックを 0.5秒にしてもずっとプチノイズが入るのは、恐らくPCの性能の関係だと思います それなりの性能の実機であれば 20分の1秒までは偶にプチノイズが入る程度になると思います ただ、この辺り( 一度に消費されるストックの量 )も、もしかしたら機種の世代や Android の バージョンによって異なるかもしれません
メンテ
Re: Android版: 同時発音数について ( No.7 )
名前:MOR(解決) 日時:2018/03/21 23:02

すみません、正しいアドレスはSoftSoundが最初に出てきたスレッドでした。 ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=past&no=1800 試してみました。実は最近、Visual Studio Emulatorでしか試してなかったので、 実機だとかなりマシだということがわかりました。 VSEでは相変わらずノイズが大きい(多い)ので、適度に実機でも確認するように心がけます。 (LoadSoundMemでは問題なし)
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存