« 英雄伝説6 | トップページ | ネットワーク使用暦=年齢(track back) »

2004/06/24

Wonder Swan total Sound Driver

というBANDAI社のWonder Swan(witch)を用いて、BGM/効果音を制御する為のDevece Driverを作っていたのですが、先日、ユーザー様からフィードバックがありました。

「パンポットが左右逆になっています。」

パンポットが0の時に、左の音量が0になれるのが正解なのですが、ソースリストを見てみましたところ、

List.1
;パンポット読み込み
	mov	al,ds:[di].WTD_PanSet		;
	shl	al,1				;
	mov	ah,0ffh				;al←左のレベル
	sub	ah,al				;ah←右のレベル
;パンポットの次元を[dB]に変換
	mov	bx,offset I_Volume_Table	;
	mov	si,ax				;
	and	si,00ffh			;
	mov	al,cs:[bx + si]			;
	xchg	al,ah				;ch←左のレベル
;	mov	bx,offset I_Volume_Table	;
	mov	si,ax				;
	and	si,00ffh			;
	mov	al,cs:[bx + si]			;cl←右のレベル
	xchg	ax,cx				;al←音量

al(左のレベル) = 46.1 × log(   (pコマンド指定値) × 2 + 1)
ah(右のレベル) = 46.1 × log(255 - (pコマンド指定値) × 2 + 1)
※46.1は、関数の引数が0~255の時に、返値が0~255になる為の定数。
※logは自然対数。(底はe)

本当。反対だ。パンポットが0の時に、右の音量が255になってる。
これは、コーディング不良だ。直さねば…!

パンポットについて、自然界の物理現象は自然対数で成り立つことから、パンポットの演算も自然対数で演算していました。
しかし、標準メーカーが提供する標準のライブラリとは互換性が無い為、移植性に優れてはおらず、パンポット値64をピークにして、0~63(右は64~127)の間を直線的に変化するモードもつけようと思っています。標準をこっちにしようかなぁ…と。

|

« 英雄伝説6 | トップページ | ネットワーク使用暦=年齢(track back) »

コメント

つづりが間違えている!

(誤) Devece Driver
(正) Device Driver (デバイス・ドライバー)

[余談]
Developer's Editionで配布される
ソースリスト中の綴りも間違えています。

(誤)Frection
(正)Freqency (周波数の意味)


 英語力の無さが伺えます。

・・・もっと、勉強しよう。

投稿: S.W. | 2004/06/24 19:34

さらに正誤表まで間違っているという罠(w。

誤)Freqency
正)Frequency

そういや最近スワンクリスタルが\1,800とかで売ってるのでロマサガ1とGBのSaga1のために買おうかと(w。

投稿: gong01 | 2004/06/25 01:04

うはははははははははははははははははははは。

投稿: S.W. | 2004/06/25 01:48

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/832373

この記事へのトラックバック一覧です: Wonder Swan total Sound Driver:

« 英雄伝説6 | トップページ | ネットワーク使用暦=年齢(track back) »