|
|
#1
|
||||
|
||||
![]()
---------------------------------
HLE audio plugin v1.8.2u1 --------------------------------- HLE audio plugin is written by Shunyuan with features: * Zilmar's audio plugin spec #1.2 for pj64-2.0, spec #1.1 for other emulators * XAudio2, DirectSound8 and No Sound driver support. * XAudio2 upmix to 5.1 ~ 7.1 * prebuffer stream audio * HLE interface * LLE interface * audio thread to update sound buffer * tested with pj64 1.6, pj64 1.7, pj64 2.x, 1964 svn r146, 1964_ultrafast 3.0, and mupen64 5.1. * auto sync game to audio * dynamic plugin interface * Lua interface to tweak per game settings Special thanks: Zilmar for the great Project64 emulator and his plugin system design. nintendo1889 for testing and push me to improve the audio quality of this plugin every time. CXD4 for his LLE RSP module, source of rsp_interface here. -------- Note: -------- From 2013/04/23 to 2013/05/17 I have implemented all the features that I need, so there won't be a new release in short time. Thanks for people that help me to develop and debug this plugin. ------------ Lua script to tweak per game settings --------------- view the Lua script here: ------------ Bug Report ------------ Please post your bug report with following information: (1) OS & System spec Windows 7 - 32 bit, 4 GB RAM (2) emulator spec Project64 2.1 (3) Plugin version HleAudio 1.7.1 (4) Game and setting RR64 (USA) Sound Driver=XAudio2 Playback Rate=48000 Fixed Audio Timing=0 Sync To Audio=0 VI Refresh Rate=2200 AI couter per byte=500 (5) bug description audio speep-up (too fast) .... (6) Did this bug exist in previous version of HleAudio? (7) Audio Record (optional, but very useful) download link -------- Then I will try to fix the bug if possible. -------- History: -------- v1.8.2u1 * fixed sometimes mupen64 and 1964 failed to initialize XAudio2 driver. * Lua script fixed World Driver Championship no audio v1.8.2 * Fixed Excitebike 64 sound crackling (Counter Factor=1, Fixed Audio Timing=0, Sync using Audio=0) * add new settings for Lua script v1.8.1 * Fixed syntax errors for Lua script * Fixed official pj64 1.6; can't use the Lua script to tweak per game settings. (no more need for the pj64 1.6 HleAudio Fixed version) * Fixed missing audio for Top Gear Rally v1.8 * Open Lua interface implemented to tweak per game settings (official pj64 1.6 doesn't support this feature because it won't call the audio plugin 'RomOpen' function, use the pj64 1.6 HleAudio Fixed version instead) v1.7.1u9 * Fixed audio slow down for A Bug's Life. * Add DirectSound hardware acceleration option in the UI (default is off, for Vista and Win7 you need ALchemy, 3D SoundBack or Xear3D EX to take advantage of this feature) v1.7.1u8 * Fixed Super Smash Bros sound delay for PJ64 2.x * Fixed Super Smash Bros sound crackling for PJ64 1.6 v1.7.1u7 * Fixed Paper Mario sound crackling (Counter Factor=1, VI refresh rate=2200, AI count Per byte=500,Fixed Audio Timing=0, Sync using Audio=0) v1.7.1u6 * work around implemented for the project64 SP DMA read error v1.7.1u5 * added UI to select output device (useful if you have multiple sound cards or install DSP plugin such as a DFX audio enhancer) v1.7.1u4 * playback rate support up to 192 KHz * playback bits support up to 24 bits (now support 16 ~ 24 bit playback) * Fixed no audio bug for Top Gear Rally (USA) (AI Count Per Byte=500, Fixed Audio Timing=1, Sync To Audio=0) v1.7.1u3 * Fixed no audio for Killer Instinct Gold (USA) 1.2 v1.7.1u2 * support for XAudio2 upmix (surround) (tested with SRS Audio SandBox) v1.7.1u1 * Fixed XAudio2 crash for pj64 1.7.0.50b23 * Fixed audio speed up issue reported by nintendo1889 * Fixed pj64 1.7.0.50b23 compatibility error reported by Goldlink11 v1.7.1 * Fixed no audio after restore game state * Fixed audo speed up of Mystical Ninja Starring Goemon * Fixed cannot change sound driver after end emulation * Fixed compatibility issue of pj64 1.7.x v1.7 * dynamic interface for project64 2.x and other emulators, now HleAudio will provide an interface from 1.2 to pj64-2.0, and provide interface 1.1 to other emulators. * added XAudio2 driver support * added No Sound driver support * removed the redundent initialization and checking from HLE emulation v1.6.2 * improved the audio quality when "Fixed Audio Timing" and "Sync to Audio" options off * improved the frame rate of N64 games that use 32 KHz audio * released the source code for the rsp_interface v1.6.1 * added OSD to show the plugin's internal data in real time (need RivaTuner Statistics Server to display OSD) * implemented auto sync game to audio feature for other emulators. Now N64 games with 32 KHz audio such as Zelda OOT, Bomberman 64, F-Zero X should sound better without crackling on 1964, mupen64 and pj64 1.6. v1.6 * changed interface to Zilmar's Common Audio plugin spec, version #1.2, because currently only project64 2.x CPU core supports "Sync using Audio" feature * integrated with Project64's setting manager. v1.5 * integrated with project64 2.0 "Fixed Audio Timing" & "Sync using Audio" options, now Bomberman 64, Zelda OOT, Resident Evil 2 sound crackling should Fixed when these two options are enabled * Fixed the bug where no was audio playing when loading more than one rom * Fixed the noises when the plugin dialog was loaded * Fixed the sound crackling for RR64 v1.4 * Fixed the slow down caused by streaming audio flow control (Bomberman64 back to 60 fps) * Fixed audio plugin crashes caused by intenal multi thread errors v1.3 * enhanced code to handle audio data underrun and overrun, Fixed the sound crackling of Zelda OOT and F-Zero X. v1.2 * tweak for 1964 a little bit * add UI for DirectSound settings v1.1 * Fixed the the sound crackling of Mario64 (sound blocks 1024x4 are too small) * added code to round the sound frequency to 32027 => 32000, 22057 => 22050 (thank CXD4's suggestion) * added code to show debug messages when unknown system types are detected v1.0 * the first release. ---------- Preview: ---------- Mystical Ninja Starring Goemon San Francisco Rush 2049 Zelda OOT Bomberman 64 Resident Evil 2 Ridge Racer 64 ----------------- my other plugins: ----------------- ShunyuanDI: Shunyuan's DirectInput8 plugin SoftGraphic: graphics plugin use mess rdp software rendering GfxWrapper: to use Jabo's Direct3D8 v1.7.0.57-ver5 with Project64 1.6 Last edited by Melchior; 26th March 2019 at 07:57 PM. |
#2
|
|||
|
|||
![]()
Hello, very impressive plugin!
Tested it with 1964 and works really good ![]() Just one question, source doesn't seem complete, any plans on releasing it? |
#3
|
||||
|
||||
![]()
It seems nice, but I've never had an issue with sound before so I don't think I'll swap yet.
__________________
http://i.imgur.com/dHvvv9j.gif |
#4
|
||||
|
||||
![]()
Been catching up on posts, just still trying to move so cannot participate fully.
A small fragment within the audio.cpp Code:
switch (SystemType) { case SYSTEM_NTSC: g_DxSoundContext.Frequency = 48681812 / g_DxSoundContext.Dacrate; break; case SYSTEM_PAL: g_DxSoundContext.Frequency = 49656530 / g_DxSoundContext.Dacrate; break; case SYSTEM_MPAL: g_DxSoundContext.Frequency = 48628316 / g_DxSoundContext.Dacrate; break; default: g_DxSoundContext.Frequency = 48681812 / g_DxSoundContext.Dacrate; break; } Code:
const long int FreqTable[3] = { 48681812, /* SYSTEM_NTSC */ 49656530, /* SYSTEM_PAL */ 48628316 /* SYSTEM_MPAL */ }; /* ... stuff in-between */ EXPORT void CALL AiDacrateChanged(int SystemType) { /* ... more stuff */ if (SystemType > 2) { DebugPrintf("Invalid SystemType\n"); SystemType = SYSTEM_NTSC; /* default value? (Suanyuan) */ } g_DxSoundContext.Frequency = FreqTable[SystemType] / g_DxSoundContext.Dacrate; /* ... */ } The DAC rate and the SystemType audio clocks are what causes the un-rounded audio frequencies (~32,006 Hz instead of exactly 32 KHz for Mario64, etc.) in Jabo's and everyone else's audio plugins. I wrote a sort of "fix" for this but it could just be a hack.
__________________
http://theoatmeal.com/comics/cat_vs_internet |
#5
|
||||
|
||||
![]()
Wow, it's nice to have more people work on plugins to help give people more choices to tinker around with
![]()
__________________
My rig: CPU: Intel Core i7 4470 3.4 GHz to 3.9 GHz Video card:: MSI nVidia GTX 970 4 GB GDDR5 OS: Windows 7 Professional 64-bit RAM: 16 GB DDR3 SDRAM 10600 HDD: 2 x Western Digital 1 TB HDDs Monitor: 23" Asus Full HD LED Oh, and Snes9x > Zsnes in every way |
#6
|
||||
|
||||
![]() Quote:
(1) fixed the Mario64 sound crackles (sound blocks 1024x4 is too small for Mario64) (2) add code to round the sound frequency. (3) add code to output debug message for unknown system type Last edited by shunyuan; 1st May 2013 at 08:55 AM. |
#7
|
||||
|
||||
![]()
Awesome work on the plugin, so I took the liberty to test some games that have emulator core issues (like Bomberman 64). I can safely say that the audio issues aren't related to any plugin, but an issue in the emulator itself.
Games like Goemon's Great Adventure sound flawless ![]() http://filetrip.net/view?SMdn59ij1G Same with Killer Instinct Gold - (Note, the audio needed to be amplified since I paused the game to remove sound effects) http://filetrip.net/view?d8V5xynmDk Games like Bombeman 64 have nasty emulator issues (resulting in crackling audio) and no known plugin can fix it, so rest assured, your plugin is not at fault. Keep up the good work! I'll continue to test.
__________________
My rig: CPU: Intel Core i7 4470 3.4 GHz to 3.9 GHz Video card:: MSI nVidia GTX 970 4 GB GDDR5 OS: Windows 7 Professional 64-bit RAM: 16 GB DDR3 SDRAM 10600 HDD: 2 x Western Digital 1 TB HDDs Monitor: 23" Asus Full HD LED Oh, and Snes9x > Zsnes in every way Last edited by the_randomizer; 23rd April 2013 at 12:56 AM. |
#8
|
||||
|
||||
![]()
I installed the latest version (for pj64_20), and it sounds always perfect as long as the VI/s is full.
When game emulation speed is incomplete (slow due to LLE gfx or possibly LLE audio as well (I tested both LLE and HLE versions of this plugin.)) then it sounds...interesting lolXD. But yeah other than that sounds as smooth as can be. What's up with the, um... HleAudio_v1.62_for_pj64_20.zip (132.0 KB, 13 views) HleAudio_v1.62_for_other_emu.zip (131.9 KB, 8 views) Besides the plugin spec version what would be some significant differences between pj64_20 and other_emu?
__________________
http://theoatmeal.com/comics/cat_vs_internet |
#9
|
||||
|
||||
![]() Quote:
__________________
--------------------- CPU: Intel U7300 1.3 GHz GPU: Mobile Intel 4 Series (on board) AUDIO: Realtek HD Audio (on board) RAM: 4 GB OS: Windows 7 - 32 bit |
#10
|
||||
|
||||
![]()
So from that answer it would suggest, more likely that plugin_other_emu would work more universally and on Project64 2.x, while plugin_pj64_20 would not work as universally and only on emulators like Project64 2.x.
So why not just have the single version that works everywhere, plugin_other_emu? Or are there some ways that other_emu releases won't work as well on PJ642? Or some advantages with audio threading/emulation lost when not using that emu?
__________________
http://theoatmeal.com/comics/cat_vs_internet |