Iori's DirectSound Driver PSEmu Pro and FPSE Plugin

Version 1.48


[Introduction]

This is a SPU plugin for PlayStation emulators.
Can use these PlayStation emulators.

PSEmu Pro
ePSXe
AdriPSX (Before 01.06.09)
PCSX
FPSE (FPSE native function included, PSEmuPro wrapper)


[What's New]

2001/09/01 Version 1.48

*Implemented Fine tune.
*Improved Release Envelope.
*Added Sound buffer size on realtime config window.
*Shared config window.
*Reduced small noise in XA sound.
*Added new reverb effect.
*Added right version's binary.

2001/08/15 Version 1.471

* Improved SPU IRQ
I'm stupid...

2001/08/14 Version 1.47

* Improved not keyoff symptom.(FF8,FF9,Chrono Cross)
* Implemented Main Volume.
* Improved Reverb.
* Improved Sustain Envelope.
* Improved small noise at keyon...?
* Improved DMA transfer function on FPSE native.

2001/07/17 Version 1.46

* Improved ADSR volume.
Very thanks null2!
* Improved "playing VAG position change".
* Implemented SPU IRQ with more correct method.(I think...)
* Implemented volume auto adjustment.("Enable Compressor" option)

"Dragon Warrior 7" is more compatible maybe...

2001/07/09 Version 1.451

* improved reverb effect.

2001/07/08 Version 1.45

* Implemented reverb effect.
Too simple approach...
*Adjust noise effect emulation.
*Solved not return plugin's internal data at stateload.

2001/07/06 Version 1.44

* Implemented Noise and Pitch Modulation.
FF7's sound effect is more compatible.

2001/07/01 Version 1.43

* solved no sound on Windows NT family...?
Thanks NJ.
* tuned emulation performance.
Speed up about 1.5 times.

2001/06/28 Version 1.42

* improved "Wait for XA buffer is free".
* improved realtime config window's a way to show.
Can not still use fullscreen.
* include english document.(so broken...)
Thanks KoolSmoky.

2001/06/24 Version 1.41

* "Wait for XA buffer is free" implement.
* "Show realtime config window" implement.
* default setting changed.
High resolution mode : OFF -> ON

2001/06/23 Version 1.40

* SPU-IRQ implement. (INCHIKI)
* default setting changed.
XA buffer size : 32 -> 48


[Usage]

1. Copy spuIori.dll to the plugin folder of your emulator.
(In FPSE, which of "Plugin", "Plugin\Psemu")
2. Select "Iori's DirectSound Driver x.x" in sound-plugin configuration window.
3. Push "Config" button, and setting some configuration, close window by "OK" button.
4. Execute emulator, enjoy.


[Configure]

1. Sound buffer size

Sound buffer length in blocks.
Use values over 1.
1 block equals to 5 milliseconds.
Smaller value will give shorter sound delay. However, if the value is too 
small, the sound will break up.
Please configure to a value which best fits your sound card.

2. XA buffer size

XA sound buffer length in blocks.
Use values over 1.
1 block equals to 5 milliseconds.
Smaller value will give shorter sound delay when you play moives and  XA sound BGM.
However, if the value is too small, the sound will break off.
Just sizes are different each XA wave format.
37800Hz,stereo...16
37800Hz,mono  ...32
18900Hz,stereo...32
18900Hz,mono  ...48

3. High resolution mode

Sound output interrupt request.
You may be able to set a shorter SoundBufferSize by setting a more frequent interrupt request.
Consecutive sounds (such as snare drums' drum rolls) may sound better by setting a more
frequent interrupt request.* Higher CPU loads with more frequent interrupt requests.
Values ON  -> interrut requests approx. every 5 milliseconds. 
       OFF -> interrut requests approx. every 2 milliseconds

4. Wait for XA buffer is free

Main-emu wait for XA buffer is free to put all XA data(emu-main send) into XA buffer.
advantages:
  * XA small noise solved.;maim-emu's timing little fast.
  * XA Sound real latency is always "Sound buffer size" + 4.(However "XA buffer size" is long)
  * "XA buffer size" shorten for each XA wave format's limit.
    37800Hz,stereo...10
    37800Hz,mono  ...19
    18900Hz,stereo...19
    18900Hz,mono  ...37
    #If shorten any longer, this option is invalid and the sound break off.
disadvantages:
  * emulator can't fast speed for FPS-limit is off in XA plaing.
  * emulator's motion is unstable.

5. Show realtime config window

Show configuration window at emulator executing for these setting change at emulator is executing.
"XA buffer size","High resolution mode","Wait for XA buffer is free"
can use window mode, can't use fullscreen window.

6. Enable Noise and Pitch Modulation

Enable noise and pitch modulation.(~~;)
If sound is funny, this option tuned off.

7. Enable Reverb

Enable reverb effect on PSX.
Uncheck...non reverb, CPU usage:low
Check...simple reverb(like echo) , CPU usage:middle
Gray...good reverb, CPU usage:high

8. Enable SPU IRQ

Enable SPU IRQ on PSX.

9. Enable Compressor

Enable volume auto adjustment.

10. Fine tune

Playng pitch adjust.
10...1 half pitch high
-10...1 half pitch low
120...1 octave high
-120...1 octave low


/*
configuration settings save at these place.
PSEmu Pro compatible:
Registry's "HKEY_CURRENT_USER\Software\Vision Thing\PSEmu Pro\SPU\spuIori"
FPSE native:
"FPSE.ini"'s "[spuIori]"
*/


[Examples of configuration]

"Sound Buffer size" only configure best fit your soundcard.
For example,
On Win98,SB Live!,VxD driver -> 4...no problem.
Even if 1...OK! ("High resolution mode" is ON)
Sound latency is about 5ms!!

1. How to always little problems setting?
"Set Default" button's setting on configuration window is most problems nothing meybe.

2. How to most light CPU usage?
"XA buffer size"             ...anything
"High resolution mode"       ...OFF
"Wait for XA buffer is free" ...OFF

3. How to most high quality sound?
"XA buffer size"             ...meybe 40
"High resolution mode"       ...ON
"Wait for XA buffer is free" ...ON

4. How to most short sound latency?
"Sound Buffer size"          ...your soundcard's limit
"XA buffer size"             ...each XA format's limit(Reference "Wait for XA buffer is free"'s explanation.)
"High resolution mode"       ...ON
"Wait for XA buffer is free" ...ON


[Issues]

1. Sound decay time is not exactly the same with the accual PSX console.
The current implementation is NOT based on the hardware documentation, but base by intuition
listening to the PSX sofware I own. 

2. Broken or no sounds in FF8/9, Cronocross movies.
Enabling "SPU IRQ hack" and its equivalents might fix this problem.

3. Runs slow
To maintain compatibility, almost no optimizations have been done.

4. No reverb noise pitch modulation.
Could someone teach me the logics?
If you can enable external-reverb, let's enable.(ex, EAX on SB Live!)

5. No sound on Windows2000...
This plugin is executing multi-thread, and changing thread-priority.
It's need "THREAD_SET_INFORMATION" access right associated.
please test on "Administrator" user.


[Thanks]

Reference these souce code.
* SPU plugin interface part in Pete's webpage by Pete
* DSP part in Snes9x by Gary Henderson
* DirectSound implementation part in UOMAME32j by NJ

SPECTOR   - Designed configuration window GUI and gave some programming hints.
KoolSmoky - Most of the translation Readme.txt in japanese to english.
null2     - Gave many hints of SPU specification.

---------------------------------------------------------------
Iori:
mailto: iorit@hamal.freemail.ne.jp
---------------------------------------------------------------
