M.A.D.製FPGA評価ボード MFP-CY240Z-B その22016年07月24日 16:10

音量小さかったのでソース修正

こちらのソースから音量部分のみ移植。

とりあえず音量は大きくなったけど、各音源のボリュームバランスはとれてるのかな?
これでダメなら内部を直接いじってみるか。


音量増加

one_chip_msx_board\emsx_top.vhd
429行目
	SIGNAL PSGAMP			: STD_LOGIC_VECTOR(7 DOWNTO 0);
                   ↓
	SIGNAL PSGAMP			: STD_LOGIC_VECTOR(9 DOWNTO 0);


package\msx_components.vhd
262行目
			WAVE		: OUT	STD_LOGIC_VECTOR(  7 DOWNTO 0 )
                   ↓
			WAVE		: OUT	STD_LOGIC_VECTOR(  9 DOWNTO 0 )

315行目
			PSGAMP		: IN	STD_LOGIC_VECTOR(  7 DOWNTO 0 );
                   ↓
			PSGAMP		: IN	STD_LOGIC_VECTOR(  9 DOWNTO 0 );


sound\mixer\mixer.vhd
65行目
		PSGAMP			: IN	STD_LOGIC_VECTOR(  7 DOWNTO 0 );
                   ↓
		PSGAMP			: IN	STD_LOGIC_VECTOR(  9 DOWNTO 0 ); 

95行目
	SIGNAL	FF_PREPSG		: STD_LOGIC_VECTOR(  8 DOWNTO 0 );
                   ↓
	SIGNAL	FF_PREPSG		: STD_LOGIC_VECTOR(  9 DOWNTO 0 );

197行目
	WITH MSTRVOL SELECT W_SCC_SFT <=
		W_S( 15 DOWNTO 14 )	& W_SCC( 18 DOWNTO  5 )	WHEN "000",
		W_S( 15 DOWNTO 13 ) & W_SCC( 18 DOWNTO  6 )	WHEN "001",
		W_S( 15 DOWNTO 12 ) & W_SCC( 18 DOWNTO  7 )	WHEN "010",
		W_S( 15 DOWNTO 11 ) & W_SCC( 18 DOWNTO  8 )	WHEN "011",
		W_S( 15 DOWNTO 10 ) & W_SCC( 18 DOWNTO  9 )	WHEN "100",
		W_S( 15 DOWNTO  9 ) & W_SCC( 18 DOWNTO 10 )	WHEN "101",
		W_S( 15 DOWNTO  8 ) & W_SCC( 18 DOWNTO 11 )	WHEN "110",
		W_S( 15 DOWNTO  7 ) & W_SCC( 18 DOWNTO 12 )	WHEN "111",
		(OTHERS => 'X') WHEN OTHERS;
                   ↓
	WITH MSTRVOL SELECT W_SCC_SFT <=
		                      W_SCC( 18 DOWNTO  3 )	WHEN "000",
		W_S( 15 )           & W_SCC( 18 DOWNTO  4 )	WHEN "001",
		W_S( 15 DOWNTO 14 ) & W_SCC( 18 DOWNTO  5 )	WHEN "010",
		W_S( 15 DOWNTO 13 ) & W_SCC( 18 DOWNTO  6 )	WHEN "011",
		W_S( 15 DOWNTO 12 ) & W_SCC( 18 DOWNTO  7 )	WHEN "100",
		W_S( 15 DOWNTO 11 ) & W_SCC( 18 DOWNTO  8 )	WHEN "101",
		W_S( 15 DOWNTO 10 ) & W_SCC( 18 DOWNTO  9 )	WHEN "110",
		W_S( 15 DOWNTO  9 ) & W_SCC( 18 DOWNTO 10 )	WHEN "111",
		(OTHERS => 'X') WHEN OTHERS;

211行目
		IF( CLK21M'EVENT AND CLK21M = '1' )THEN
			FF_PREPSG	<=	(('0'          & PSGAMP  ) + (KEYCLICK & "00000"));
			FF_PRESCC	<=	((SCC1AMPL(14) & SCC1AMPL) + (SCC2AMPL(14) & SCC2AMPL));

			FF_PSG		<=	"000" & SHR( (FF_PREPSG * PSGVOL) &  "0", MSTRVOL );
			FF_SCC		<=	W_SCC_SFT;

			IF( OPLLAMP < C_OPLL_ZERO )THEN
				CHAMP := "00" & SHR( ((C_OPLL_ZERO - OPLLAMP) * OPLLVOL) & "0", MSTRVOL );
				FF_OPLL <= C_AMP_OFFSET - ( CHAMP - CHAMP( 15 DOWNTO 3 ) );
			ELSE
				CHAMP := "00" & SHR( ((OPLLAMP - C_OPLL_ZERO) * OPLLVOL) & "0", MSTRVOL );
				FF_OPLL <= C_AMP_OFFSET + ( CHAMP - CHAMP( 15 DOWNTO 3 ) );
			END IF;
		END IF;
                   ↓
		IF( CLK21M'EVENT AND CLK21M = '1' )THEN
			FF_PREPSG <= (PSGAMP + (KEYCLICK & "000000"));
			FF_PRESCC <= ((SCC1AMPL(14) & SCC1AMPL) + (SCC2AMPL(14) & SCC2AMPL));

			FF_PSG <= "0" & SHR( (FF_PREPSG * ("0" & PSGVOL)) & "0", MSTRVOL );
			FF_SCC <= W_SCC_SFT;

			IF( OPLLAMP < C_OPLL_ZERO )THEN
				CHAMP := SHR(((C_OPLL_ZERO - OPLLAMP) * OPLLVOL) & "000", MSTRVOL );
				FF_OPLL <= C_AMP_OFFSET - ( CHAMP - CHAMP( 15 DOWNTO 3 ) );
			ELSE
				chAmp := SHR(((OpllAmp - c_opll_zero) * OpllVol) & "000", MSTRVOL );
				FF_OPLL <= C_AMP_OFFSET + ( CHAMP - CHAMP( 15 DOWNTO 3 ) );
			END IF;
		END IF;


sound\mixer\psg.vhd
58行目
		WAVE		: OUT	STD_LOGIC_VECTOR(  7 DOWNTO 0 )
                   ↓
		WAVE		: OUT	STD_LOGIC_VECTOR(  9 DOWNTO 0 )

92行目
	WAVE <= W_WAVE( 9 DOWNTO 2 )
                   ↓
	WAVE <= W_WAVE

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
答えは「MSX」です。

コメント:

トラックバック

このエントリのトラックバックURL: http://miyako.asablo.jp/blog/2016/07/24/8138234/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。