#1  
Old 18th September 2017, 08:37 PM
Tasoulis Tasoulis is offline
Senior Member
 
Join Date: May 2011
Posts: 164
Default Looking for a good sound plugin

What's the most recent/best official or custom audio plugin to use nowadays?

I do have a version from Azimer but i have no idea how recent/good it is. And i don't know what options to use (the buffer sliders for example). Can someone help with this?
Reply With Quote
  #2  
Old 18th September 2017, 10:25 PM
Frank74's Avatar
Frank74 Frank74 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2013
Location: UK
Posts: 828
Default

Guessing you're using my custom build of Azimer's latest 0.7. The gui for the new config branch on Azimer's Github doesn't work yet though. So I added the buffer settings and backend selection to the old dialog, which is not working in Azimer's new configuration dialog.

I've also added forced custom settings for a number of games.
My latest build is here: https://www.dropbox.com/s/vx33ovs4hi...W_x86.zip?dl=1

Here's the list of games I found ideal settings for. I disable PJ64's frame limiter, and game should stay synced to roughly 60 VI/s with Prevent Buffer Overruns turned on in Azimer's. If it doesn't, it needs a custom buffer setting.
I have Fixed Audio Timing turned off for nearly every game. TWINE and a couple other MusyX games need it turned on.

The hackSyncAudio = true below, forces Prevent Buffer Overruns to Off for the games above that case.

Quote:
case 'BH': /* Body Harvest */
Configuration::hackBackendFPS = 95;
break;
case 'NS': /* Beetle Adventure Racing! */
case 'CW': /* Cruis'n World */
case 'VL': /* V-Rally Edition 99 */
case 'V8': /* Vigilante 8 */
case 'VG': /* Vigilante 8 - 2nd Offense */
Configuration::hackBackendFPS = 60;
break;
case 'GE': /* Goldeneye */
case 'PD': /* Perfect Dark */
Configuration::hackBackendFPS = 30;
break;
case 'RZ': /* Ridge Racer 64 */
Configuration::hackBackendFPS = 60;
Configuration::hackSyncAudio = true;
break;
case 'AR': /* Armorines - Project S.W.A.R.M. */
case 'MX': /* Excitebike 64 */
case 'MO': /* Monopoly */
case 'RV': /* Re-Volt */
case 'SU': /* Rocket - Robot on Wheels */
case 'CS': /* S.C.A.R.S. */
case 'SD': /* Shadow Man */
case 'DT': /* South Park */
case 'SL': /* Spider-Man */
case 'TF': /* Tony Hawk's Pro Skater */
case 'TQ': /* Tony Hawk's Pro Skater 2 */
case '3T': /* Tony Hawk's Pro Skater 3 */
case 'L2': /* Top Gear Rally 2 */
case 'TU': /* Turok - Dinosaur Hunter */
case 'T2': /* Turok 2 */
case 'TK': /* Turok 3 */
Configuration::hackSyncAudio = true;
break;
}
If you find any regular games with problems, let me know, and I'll try to find the right settings to force apply. Twisted Edge and Top Gear Rally have problems I know about, but haven't found any perfect settings for them yet.

It would be nice to have custom settings for every game that needs them. Then there would be no need for any options apart from backend driver selection.

Edit: P.S.
There's a new native audio plugin appeared in Project64's latest Github source. It doesn't play audio yet though. It's using OpenSL ES as the driver. So will be cross platform. We'll just have to wait a while for that I guess. Cool huh?! .

Last edited by Frank74; 18th September 2017 at 11:30 PM.
Reply With Quote
  #3  
Old 19th September 2017, 05:26 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,245
Default

OpenSL ES afaik is Android-only and is not cross-platform. (There's OpenGL ES which is a subset of OpenGL for embedded mobile phones, but OpenGL ES contexts do not run on desktop Windows, Linux etc. (with special exceptions I won't delve into)).

There's OpenAL which never made it very far and is stuck at a proprietary version 1.1, much unlike OpenGL which made it to 4.x. OpenSL ES has entirely different function names than from OpenAL, but you could say it's based loosely on the API. At any rate, it doesn't work on Android! Only OpenSL ES or high-level APIs running on top of it like SDL do.

Quote:
Originally Posted by Frank74
It would be nice to have custom settings for every game that needs them. Then there would be no need for any options apart from backend driver selection.
Your switch on the game IDs is pretty cool, but as a matter of principle I think game-specific settings should go in a INI file or something. The plugin code should focus on system accuracy and not game-by-game overrides. I understand it's niftier and easier to do it with the switch cases inside the code you did in the interim.
Reply With Quote
  #4  
Old 19th September 2017, 05:17 PM
Tasoulis Tasoulis is offline
Senior Member
 
Join Date: May 2011
Posts: 164
Default

Thanks Frank, yeah, this is the plugin i use, i got it from the Body Harvest thread. If it's the latest version then awesome, i don't need to look for anything else atm.

Also yeah, the game i'm most interested to see fixed is Top Gear Rally. I get random crackling for a few seconds in PJ64+this plugin or sudden skipping in m64p. Tough game to fix i assume, taking into account that since recently the music was completely glitched with any plugin or emulator.
Reply With Quote
  #5  
Old 19th September 2017, 07:01 PM
Frank74's Avatar
Frank74 Frank74 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2013
Location: UK
Posts: 828
Default

Try Backend FPS at 95 or 65 for Top Gear Rally. It seems to stay clear sound. If it starts crackly, pause emulation and resume.

You need to reload the game, or load a savestate after changing any buffer settings for it to take affect.

Top Gear Rally doesn't use an Audio List, so it's not controlled by the audio plugin. It's all done by the CPU instead. It's a game to test when/if PJ64's core CPU timing becomes accurate.
Reply With Quote
  #6  
Old 19th September 2017, 07:03 PM
Frank74's Avatar
Frank74 Frank74 is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Aug 2013
Location: UK
Posts: 828
Default

Quote:
Originally Posted by HatCat View Post
Your switch on the game IDs is pretty cool, but as a matter of principle I think game-specific settings should go in a INI file or something. The plugin code should focus on system accuracy and not game-by-game overrides. I understand it's niftier and easier to do it with the switch cases inside the code you did in the interim.
Actually YOUR switch statement!

I took it from your comment on Azimer's hack for Twisted Edge.

Cheers!

P.S.
If I remember rightly, my first attempt at saving settings in Azimer's, I used a text (INI) config file.
But I was convinced to use binary for the options instead by someone.

Last edited by Frank74; 19th September 2017 at 07:06 PM.
Reply With Quote
  #7  
Old 20th September 2017, 04:31 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,245
Default

Oh, that was my switch statement? Well never mind in that case. I mean duh it's going to be pretty cool. I do vaguely recall demonstrating one.

The only problem with my example (which is written to be readable and illustrative, not fully portable) is if you're maximally pedantic with code conformance and safety, multi-char strings (case 'SM': ... case 'PD' ... etc.) are a practice that can cause warnings to be issued (probably because a char is not necessarily 8 bits).

Although it's unrealistic to worry about that when any system running MIPS emulators is likely itself going to have 8-bit bytes.


And yeah a text config format is wisest for all reasons except quickness to implement, larger config file sizes (we have like TB hard drives now tho?) and less hard disk access / micro-performance. But text format is still best; if we wanted binary + maximum micro-performance we could just write a program to edit the settings in the AziAudio DLL instead of making a separate binary file. Being realistic here, text-format config has been the best since the 60s and is the best today.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 08:45 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.