Genesis Plus GX, Where is the Audio Lowpass Filter?


What test?

I provided actual measurement of high fidelity recordings of the most sought after Sega Genesis Model1 consoles which agreed by all the web to have the best sound processing.
Then I gave a precise Lowpass value that matches these console.

Can you please provide more information on how you decided upon this 0.6 value and to what did you compare it too?


i do my own test. and sources from youtube are just good reference as they do their own post processing… just look at how the high notes are compressed and leveled before cut down at 20 kHz


Really? Please enlighten me.
You seem to be confused about the 15kHz slope, this is generated by retroarch sampling rate conversion, and has nothing to do with the real hardware console recordings.

The sources I use are not Youtube or MP3, they are 44.1kHz 16bit FLAC.


you have your result, i have mine. what the big deal? when the core option is going to be configurable anyways. i claim no 101% accuracy as i have said, this is based on graph and not how it sounds. you think you have the most accurate config then do so, not a big deal to me.


Why do you refrain from sharing your measurement method?
As a scientist, I believe the only true reliable data is done by actual un-biased (no human factor) measurements.
Please don’t tell me you used a laptop with earbuds, as reference for your 0.6 value…

I’ll say it once again, the Lowpass value should closely match the best known Genesis hardware console (Model1), and only then tweaked by ear by the end user.

[quote=“wertz, post:41, topic:12169”] i say no no to equalizer, its just suppose to be some sort of tone controls and currently its not working(as dev said). dsp can do the equalizing but lowpass should be core option as its as close as a megadrive model1 sounds, compared to playing with dsp filters.[/quote] +1 to this.


Maybe have multiple quick access “preset” options? One for early models (0.4), one for later models (0.6) and last for custom (0.05 delta).

Heard that later models have higher muffling due to ~three~ low-pass filters and steeper rolloff.

ekeeke was using 0.6 as default value, which agrees with wertz. So maybe they both have the later revision.

Kinda like the MT-32 - some sfx work only on early / later models.

Either way, thank you everyone (especially James-F) for digging out this pretty important finding that Retroarch people have been missing out on. And ekeeke of course for being the all-knowing Sega guru we’ve all come to know about and love.


Let me clarify about later model lowpass filtering.

Model 2 of the Genesis/MageDrive actually uses second-order (12db/oct) lowpass filtering which is steeper that Model 1 first-order lowpass (6db/oct).
Sega used a steeper second-order filtering on Model2 because it had terrible audio quality.

The Lowpass emulated in GenPlusGX is first-order ONLY thus can never sound like the later Model2 filtering.
The 0.4//0.6 values we talk about correspond to a frequency the first-order lowpass starts at, but could never sound like second-order lowpass simply because the code in GenPlusGX is for first-order ONLY.
Changing the 0.x value would be like changing the capacitor which determines the cut-off frequency on the real Model1 console, and will NOT get you closer to the Model2 sound in any way, not that you want too anyway.
According to my measurement of various Model1 consoles, there is virtually no difference in cut-off frequency, therefor a single correct default value in GenPlusGX will do to match that.

Therefor, we should use the correct measured value for Model1 and not try to guess or remember how your sounded or should sound, I urge you to understand that.
Eventually the end user can do whatever he wants, but please don’t make the wrong/guessed value as default.

The 60% value be ekeeke comes from what he though sounded the same from his Wii running GenPlusGX. He didn’t actually measure the frequency response, but tuned to what sounded close to him and not even in direct comparison.
I’m still waiting for a response from wertz about what method he used to get the 0.6 value, which he CONFIRMS to be correct.


Okay, think I get it now. Thanks for explaining all that in precise details. :slight_smile:

BTW, have you seen this? Do you know how close it compares?


It compares very well, mainly because they used the 16bit-audiophile project as reference (it’s actually mentioned in their website), as do I.
It seems from the frequency response that the YM2612 emulation is slightly less accurate than of GenPlusGX, but the filtering is very close.

Orange-JAP Model1 VA1, Blue-RYMCast Player.


The lowpass filter option just got merged into the main libretro repo, so it should be showing up in the online updater soon.


Honestly after reading all this audiophile tech-jargon that I don’t understand I’m just eager to see if I can tell the difference lol.

Had a Gen2 growing up, but been using emulators since like 2001 really.

Can’t wait to compare lol


First, Thank You!
New ver is up online.

Few notes,
The slope at 15kHz still exists, I have no idea what could be the cause, but other emulators don’t behave like this.
A value of 45 will give you spot-on curve of Model1 up to 12kHz, from there the down slope begins.
The default value of 60 is slightly more filtered than a Model2 would be, but a value of 55 is a better match, although the cuvres do NOT sit perfectly one on top of each other like the Model1 curves because GenPlusGX emulates 1st-order filter while Model2 has 2nd-order filter.

Once again, thank you for adding this important feature in Genesis Plus GX.


Maybe you should post an issue about this slope problem here:

I don’t think Ekeeke read this forum.


Is this true, then? There is a sample rate macro that r5 added while we were working on the lowpass stuff. You can try changing it to 48kHz and recompile to see if that fixes it.


I assume that the 15kHz brickwall filtering in GenPlusGX is because the emulator outputs a lower sampling rate than 48000 therefor Retroarch’s Sinc filter utilizes the brickwall filtering to prevent aliasing, and this is actually the correct way to do it, so retroarch audio driver works as it should.
I would assume again that GenPlusGX outputs a lower sampling rate.
With Nestopia for example I do not see this brickwall filtering, the analyzer shows all frequencies having the same energy right to 20kHz.

I can say that there is a lot of interaction between the emulation internal sampling rate and retroarch output sampling rate, Driver and sampling rate conversion method.
After fiddling around I found that DAudio is the most clear and free of aliasing driver along with Sinc rate conversion. XAudio on the other hand has has a lot of aliasing and artifacts that I can see on the analyzer with non-standard output sampling rates.


Out of curiosity, do we know which model the Nomad would follow? I played this far more than any other version as a kid lol

Also, gotta say, I didn’t think I’d notice a difference, but I just played around with that default 60 value and I am amazed at how less (I don’t know the right verbage) … tin-like? The sound was. Like I didn’t realize how ‘sharp’ it sounded without the filter?

Anyway, this is pretty damn cool. Thanks to everyone for all the work here.


James-F, thanks for your research on this. Cool to see this in the plugin now!

Can you explain how you made these graphs? I’m trying to figure out how to get accurate .vgm playback by adding an EQ plugin in foobar2k and it would be useful to figure out how to do a similar comparison.


I used Auto Equalizer plugin by Melda Productions.

Basically this plugin measures average frequency response across time between two songs then matches the frequency response of one to resemble the other, very useful tool.
I usually play the first song till the graph stabilizes, then do the same for the other song for equal amount of time.
If the frequency response of the graphs is the same, the graphs should overlap.

I don’t understand why the devs chose a default value of 60 when in reality it doesn’t resemble any model of the genesis, this will just confuse newcommers.
I provided accurate values for Model 1 yet an inaccurate value has been chosen as default…
Well, I guess people who care for accuracy will find this thread anyway.


We went with Ekeeke’s default value for consistency with upstream.


The 3-band EQ core option may be re-exposed soon, Ekeeke squashed the bugs related to that feature today and all it takes is for a line to be uncommented to see those options in the libretro core.

@James-F - In regards to the sample rate: if you think a higher sample rate would better match the real hardware, you can alter this line:

It’s currently set at 44.1k as you see and it wasn’t bumped to 48k because RetroArch and Gens-Plus-GX can run in all sorts of hardware, which may be negatively affected e.g. not managing to run fullspeed.

Do try it. If you can make a case for it, I can lobby bossman @Twinaphex about it.