[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/03 08:20 / Filesize : 236 KB / Number-of Response : 805
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

NintendoDS(NDS)非公式開発 Part2



93 名前:Moonlight mailto:sage [2007/05/27(日) 21:05:25 ID:MUD6Al/y]
>>92

mdxonlinemirror.dyndns.org/sndtest.zip

A/B/X/Yボタンでそれぞれ違うフォーマットのサウンドファイルを再生するサンプルをでっち上げました。
変換にはSOXを使用しました。変換オプションはsndtest/arm9/data/convert/conv.batを参照してください。
DevKitProのcombinedサンプルをベースにしましたが、ARM7とARM9で8bit/16bitの設定方法が食い違っていたので、ARM7のtemplate.cを修正しました。
devkitPror20/nds-examples-20070327/templates/combined/arm7/source/template.cの10行目を、
SCHANNEL_CR(channel) = SCHANNEL_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==1?SOUND_8BIT:SOUND_16BIT);
から、
SCHANNEL_CR(channel) = SCHANNEL_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==0?SOUND_8BIT:SOUND_16BIT);
に変更してあります。
あと、ダミーの割り込みを有効にしないと、swiWaitForVBlankは使えないので、InitInterruptsで空の割り込みを有効にしてます。combinedサンプルはそのままじゃ動かない…ですよね?

ここから下は補足です。
NDSのサウンドチップは32768Hzをベースにしているので、これ以外の周波数を鳴らそうとすると量子化ノイズが入ります。
A/Bボタンの22kHz再生でチリチリ言うのがわかると思います。容量の問題ならもっと下げて16384Hzで二倍オーバーサンプリングするのが良いと思います。
ADPCMは未だになんだかよくわかりません。二種類のADPCMを使えるみたいですが。
ステレオデータを再生するときは、左右分離してデータを二つ用意して、パンを両端に振って同時に再生すればOKですが、libndsの標準関数を使うと1vsync(16ミリ秒)ずれるので、自分でステレオ再生用関数を作った方が良いと思います。
8bit/16bitは、平滑化フィルタを入れれば8bitでも充分かなと私は思っています。容量などを考えながらケースバイケースで使い分ける感じで。
ちなみに、DSMPlayは8bitデータで平滑化フィルタを使っています。sin波ボタンでON/OFFできるので、聴いてみたいだけなら試してみてください。







[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<236KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef