Hi
I really hate the washed out sound of the low pass filter on the SNES. Does anybody know where on the PCB the raw analog audio is prior to the LPF? This is on a SNES 1993 PCB without the separate APU.
Is this the same sound in emulators as in hardware? If so, nothing can be done.
lidnariq wrote:
Is this the same sound in emulators as in hardware? If so, nothing can be done.
I don't think the LPF is in the digital domain, I believe it's done with passive analog components on the PCB.
At least it was with the 1st model SNES with the APU board. I'm not sure about the later model that I referred to in the OP (the board I am trying to mod).
The DSP performs a "Gaussian interpolation" step immediately after BRR decoding. This step reduces aliasing but severely reduces the treble of the decoded waveform. To counter this, my BRR encoder preemphasizes the wave somewhat, boosting treble before encoding. But I imagine that not all BRR encoders do this.
tepples wrote:
The DSP performs a "Gaussian interpolation" step immediately after BRR decoding. This step reduces aliasing but severely reduces the treble of the decoded waveform. To counter this, my BRR encoder preemphasizes the wave somewhat, boosting treble before encoding. But I imagine that not all BRR encoders do this.
So the LPF is in the digital domain? No access to the raw information (analog or digital) without the interpolation?
If you look at
jwdonal's redrawn schematics, there is some filtering around the output of the SHVC-APU.
But unless you already have witnessed that it sounds different between the console and an emulator, that filtering is not what you're hearing, and what tepples says is true.
The fliters present on the analog side have very low effect on the sound.
The muffledness comes from the low quality samples and as mentioned earlier the interpolation which you cannot do anything about. I would presonally like an SPC clone where one can disable that, most music starts to sound much better while only some suffer and for those one could re-enable it.
lidnariq wrote:
If you look at
jwdonal's redrawn schematics, there is some filtering around the output of the SHVC-APU.
But unless you already have witnessed that it sounds different between the console and an emulator, that filtering is not what you're hearing, and what tepples says is true.
Wow... i'm going to have a field day with these schematics
TmEE wrote:
The fliters present on the analog side have very low effect on the sound.
The muffledness comes from the low quality samples and as mentioned earlier the interpolation which you cannot do anything about. I would presonally like an SPC clone where one can disable that, most music starts to sound much better while only some suffer and for those one could re-enable it.
Lets disregard the low quality samples for a second.
Okay, the interpolation is within the sound APU itself. Got it. So in the 20 years that the SNES has been out, no one has tried to create a APU clone without interpolation? Since emulators have been around forever, I assume it is already known exactly what is in the hardware.
Also, I am guessing the Genesis has no such interpolation on it's Audio DSP? Genesis, while the sound effects are much less quality, they sound extremely crisp and "raw"
I really doubt it's even remotely trivial to recreate the APU in hardware.
And yeah, Mega Drive doesn't, the output from the two sound chips is about as raw as it gets. The low pass filtering there comes from the two signals getting mixed into one with analog components, and how much gets filtered is directly tied to the quality of those components (which is why the muffling depends on the board revision, and why it's possible to modify it into a practically crystal clear output).
The Genesis natively produces audio using FM synthesis and 1-bit waveforms. Both of these are ways that generate tremendous amounts of acoustic energy high in the audio spectrum—what you're interpreting as "crisp".
The SNES, on the other hand, has a wavetable synthesizer that uses a comparatively low sample rate and a compression method that tends to produce non-enharmonic overtones, encouraging the use of strong filtering.
Sik wrote:
I really doubt it's even remotely trivial to recreate the APU in hardware.
Seems like an involved and tedious but straight-forward FPGA project.
There are SPC equivalents made in FPGA, I think Kevtris made one, and there's also one by some Japanese guy.
As far as OPN family FM chips go, the waveform is not 1 bit, it is log-transformed 12bit quartersine, that is converted to linear 14bit output, then mixed with other channels to get 16bit final output.
I think the "1 bit" stuff was referring to the square and noise channels in the PSG inherited from the SMS.
Yeah, pretty sure it was referring to the PSG (although even that is misleading, since even though they're technically 1-bit they still can have different volume levels). Also don't forget one of the FM channels being replaceable by a pure DAC output (although timing has to be done by the Z80, thereby why most of the time the quality is low since it heavily depends on the programmer).
TmEE wrote:
There are SPC equivalents made in FPGA, I think Kevtris made one, and there's also one by some Japanese guy.
Oh right, forgot about the latter, although that guy did
the entire system in a FPGA.
Sik wrote:
Oh right, forgot about the latter, although that guy did the entire system in a FPGA.
Seriously?? And who is this guy? Where can I find his project?
Here you go. There's the obvious catch though, it's good enough to get Megaman X to run but that doesn't necessarily mean that it behaves 100% identical to a real SNES (i.e. it's in the same situation as emulators). This is the biggest issue here, if one were to make a clone of the SPC700, we'd need to ensure it behaves exactly the same as its original counterpart in every single regard, or eventually we'll hit something that won't want to work with it (but works just fine on the real thing).
So yeah there's that. You can recreate it with a FPGA, the issue is being able to make a good clone.
Sik wrote:
Here you go. There's the obvious catch though, it's good enough to get Megaman X to run but that doesn't necessarily mean that it behaves 100% identical to a real SNES (i.e. it's in the same situation as emulators). This is the biggest issue here, if one were to make a clone of the SPC700, we'd need to ensure it behaves exactly the same as its original counterpart in every single regard, or eventually we'll hit something that won't want to work with it (but works just fine on the real thing).
So yeah there's that. You can recreate it with a FPGA, the issue is being able to make a good clone.
Absolutely fascinating! It's a pity that no source code is available, although I suppose it could be used to make clones if it would end up in the wrong hands...
Perhaps what's needed next is some logic analyzer traces on the sound RAM.