﻿viopsf用に改造/作成したspuプラグインです。
他の用途には使用しないでください(特にspuPeopsSound)。正常に動作するとは限りません。
viopsf.binと同じ場所に置き、viopsfの設定画面で使用したいspuプラグインのファイル名を指定してください。


■更新履歴
[2018-08-10]
spuPeopsSound: Output filter 1にMiddle Boostを追加。
               viopsf使用時は関係ないが、SPUasyncが呼ばれたときもOutput filter 1のFrequency Response2以降が有効になるようにした。

[2018-07-22]
spuPeopsSound: PSX reverb(another)の名称をPSX reverb 2に変更。
               PSX reverb 2に初期化漏れやバグがあったのを修正。これでだいぶ実機に近くなったかと。
               InterpolationにSincを追加。
               Output filter 1にLow-pass Filterを追加。Sinc interpolationと合わせて使うと良いかも。
               ADSR levelがreadされるとき10bitの値を返すようになっていたが、なぜそのようになっているかわからないので、
               多くのSPUエミュ同様16bitの値を返すようにした。
               その他細かい変更。

[2017-11-11]
spuPeopsSound: ソースコードを整理してリビルド。

spumednafen:   SaGaFrontier2のpsf再生時にノイズが鳴るのを修正。
               ADSRのエミュレーションで、DecayからSustainに移るときの条件を
               HighlyExperimentalやPeopsと同じにした。
               その他細かい変更。

[2017-09-17]
spuPeopsSound: メタルギアソリッドでchannel1から変な音が鳴るのを修正。
               といってもソースはどこも変更しておらず、リビルドしたらなぜか改善した。
               前バージョンのバイナリにどこか問題があった?

spumednafen:   SPU割り込み関連のコードを一部変更。
               メタルギアソリッドでテンポが速かったので。 

[2016-06-25]
spuPeopsSound: リバーブがおかしくなることが多かったのを修正(アストロノーカのネームエントリーなどで顕著だった)。

[2015-11-29]
spuPeopsSound: Output filter 1オプションのFrequency Responseフィルターの初期化が甘かったのを修正。
               Output filter 1オプションにFrequency Response2とDe-alias Filterを追加。
               ReverbにPSX Reverb(another)を追加。mednafenや独田地獄斎氏の解析結果を参考にした。Frequency Response2と組み合わせると良いかも。

[2015-10-03]
MAMEのSPUコアを使用したspumame.dllを追加。
spuPeopsSound: Output filter 1オプションのFrequency Responseの実装を変更。HighlyExperimentalと同じにした。

[2015-08-29]
spuPeopsSound: DMAの読み書きに関するコードを少し変更。ゼノギアスで余分な音が鳴らなくなった。

[2015-08-08]
spuPeopsSound: spuRAMを0で初期化するようにした。とあるpsf再生後に別のpsfを再生すると変な音が混じることがあったので。
               設定画面でEnable developer debug modeにチェックを入れた場合、設定画面オープン時にデバッグウインドウも表示するようにした。
               ChannelMutingはConverter(foobar2000)/DiskWriter(Winamp)やReplayGainScan使用時にも影響するので注意。
               Dump ramを押すとアプリケーションの実行ファイルと同じ場所にspu-ram.binというファイルができます。
               Load ramはviopsfで使用時には使わないほうが良いでしょう。

spumednafen:   ReadDMA関数の細かい修正。

[2015-08-01]
最初のリリース


■spuPeopsSound.dll
v110bを改造したものです。
動作にはSSE2に対応したCPUが必要です。私の環境ではSPUEternal.dllよりも重いです。
設定をdllと同じ場所のiniファイルに保存するため、foobar2000使用時foo_input_viopsfはuser-componentsフォルダ以下へのインストール推奨。

* viopsfで使用時に有効なオプション
Volume
Reverb
Interpolation
Reverb boost
Mono sound
Enable developer debug mode -> チェックを入れると、設定画面を開くときにデバッグウインドウも同時に表示します。
Output filter 1
Output filter 2
Volume - Voices
ReverbTarget -> dllと同じ場所に作られるspuPeopsSound_expert.iniを開いて設定できます。GUIで設定はできません。
                数値を大きくするほどPSX reverb (best quality)選択時リバーブが強くかかります。100以内にしたほうが良いです。

Interpolationは設定によってはノイズがのりやすくなります(特にCubic)。
各オプションの詳細についてはpeopsspu_110_userguide.txtを参照してください。
ただしOutput filter 1はオリジナルから改変しており、HighlyExperimentalのSimulate frequency responseオプションと同じにしています。

* デバッグウインドウ
ChannelMutingはConverter(foobar2000)/DiskWriter(Winamp)やReplayGainScan使用時にも影響します。
Dump ramを押すとアプリケーションの実行ファイルと同じ場所にspu-ram.binというファイルができます。
Load ramはviopsfで使用時には使わないほうが良いでしょう。
各channelごとに現在のspuのパラメータが見られるので、psfのdebugに便利です。

■spumednafen.dll
マルチシステムエミュであるmednafen_v0.9.38.5のPSSPUのコアから作成したものです。
設定画面はありません。
ポータブル用に適しています。

■spumame.dll
MAMEのSPUコアから作成したものです。
設定画面はありません。
ポータブル用に適しています。

■再現性
spupeopssound -> ポップノイズがのりにくい。サガフロンティア2の Todfeindやベイグラントストーリーも正常に再生できる。
spumednafen   -> 特に問題ない?
spumame       -> ベイグラントストーリーでポップノイズが目立つ。サガフロンティアのBattle 1等で音のバランスがおかしい。


■注意
エミュレーションについてはあまり理解できてないのでバグがあるかもしれません。
知識のある方は改良してやってください。


■License
[spuPeopsSound] -> GPL v2
copyright (C) 2002-2015 Pete Bernert
Please refer to src\peopsspu110b_src\spuPeopsSound\License.txt

[mednafen] -> GPL v2
copyright (C) 2005-2015 Mednafen Team
Please refer to src\spumednafen\COPYING

[SPU core of MAME] -> BSD-3-Clause
copyright-holders: pSXAuthor, R. Belmont
Sony PlayStation SPU (CXD2922BQ/CXD2925Q) emulator
    by pSXAuthor
    MAME adaptation by R. Belmont

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.