Skip to main content

Topic: Game Emu Player (foo_gep) by kode54 (Read 163013 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #150
Sonic the Hedgehog "Invincibility" periodically loses a bass note, just like the issues with other games/tracks.  Pretty easy to spot.  "Labyrinth Zone" as well.  Probably others.  "Staff Roll" is pretty buggy, especially towards the end.
  • Last Edit: 18 July, 2010, 01:41:01 PM by SmartOne

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #151
It would be really cool to have configurable channel panning for at least the 8-bit formats.

Is it possible to have FIR filter adjustment as well?

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #152
Panning control means more preferences settings to store, since I'll at least need to store panning settings for up to 32 channels, possibly even per format if it's requested.

As for FIR filter adjustment, there's only a few formats that even use FIR resampling, being SPC with Sinc interpolation, which is currently hardcoded to use a Kaiser window function, and the GYM/VGM inputs resampling their FM emulators from their native sample rates down to the output sample rate, and I don't know what window function that resampler uses. Let me know which of these you think needs tweaking, and yet another set of controls in the already crowded preferences dialog.

  • Arthur
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #153
Me again,
Quick feature request/enhancement, the current kss engine has trouble with most, all? the demo tunes found at kss kingdom, i.e, the ones that use extended msxMusic/moonsound type extentions. Basic psg and/or YM2413 sounds come out fine, though. And, a suggestion for the crowded dialog, tab controls, perhaps?


  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #154
Panning would probably go next to each channel in playback override, correct? 

Maybe FIR adjustment isn't necessary.  I thought FIR applied to NES, SMS, etc. as well because those chips don't really have a sample rate.  Maybe a boring old low-pass filter is what I'd really like.  Something to make Genesis and 8-bit formats sound less bright (like the "Filter" option in Kega Fusion).  Or not.

An option to resample SPCs would be good for devices that don't support 32000 Hz.  Unfortunately the foobar2000 resampler handles everything.

What's this "surround effect" on SPCs that I always disable?

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #155
Me again,
Quick feature request/enhancement, the current kss engine has trouble with most, all? the demo tunes found at kss kingdom, i.e, the ones that use extended msxMusic/moonsound type extentions. Basic psg and/or YM2413 sounds come out fine, though. And, a suggestion for the crowded dialog, tab controls, perhaps?

Game_Music_Emu supports MSX Audio and MSX Music extensions at the correct register addresses. Perhaps there is something wrong with the emulation besides that? You're welcome to look at it, if you know anything about how it's supposed to work. Source for the current version of Game_Music_Emu which I'm using. Since the only reference I have is Nezplug++, and it doesn't seem to be significantly different from that in the FM emulator department, it must be something else.

Panning would probably go next to each channel in playback override, correct?

Making the dialog twice as wide, and adding twice as many controls to show, hide, update, and handle. Not to mention that I would have to switch from Effects_Buffer_Simple to the full Effects_Buffer, since the former doesn't support manual panning control of every voice.

Maybe FIR adjustment isn't necessary.  I thought FIR applied to NES, SMS, etc. as well because those chips don't really have a sample rate.  Maybe a boring old low-pass filter is what I'd really like.  Something to make Genesis and 8-bit formats sound less bright (like the "Filter" option in Kega Fusion).  Or not.

That is what the Effects control and Bass/Treble sliders are for. If you want it more muffled, turn the Treble control down.

An option to resample SPCs would be good for devices that don't support 32000 Hz.  Unfortunately the foobar2000 resampler handles everything.

If your sound hardware doesn't support multiple sample rates, it's probably better to resample to the highest supported rate anyway.

What's this "surround effect" on SPCs that I always disable?

Prevents certain SPCs from employing per voice or global phase inversion, which is usually achieved by negating either the left or right channel or global volume registers.

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #156
Making the dialog twice as wide, and adding twice as many controls to show, hide, update, and handle. Not to mention that I would have to switch from Effects_Buffer_Simple to the full Effects_Buffer, since the former doesn't support manual panning control of every voice.


At least Notso Fatso would finally be rendered obsolete.  Please. 

  • Zetto
  • [*][*]
Game Emu Player (foo_gep) by kode54
Reply #157
hey kode,

I get heavy CPU load (up to 50% on an E8400 @ 4GHZ) when playing back SPCs and changing into my "fullscreen" view with my progress bar+counters and some high res images. I think the problem is the "1 second Refresh" and the amount of info + SPC/Your Component. I only notice that heavy CPU usage when playing back SPCs (haven't tried other vgm formats yet). As soon as I get rid of the per-second information, CPU load falls back to normal. Using gep 1.102 + foobar 1.1.

Standard music formats of course work fine.
  • Last Edit: 18 October, 2010, 06:27:01 PM by Zetto

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #158
Per-second information? The only live information that SPC reports that no other formats report is the minimal information for the SPC700 status dialog. That is, less than 512 bytes per frame of hexadecimal encoded binary strings. Of course, it would slow down any info display component that follows dynamically updated metadata. I can add an option to disable it, but then the SPC700 status dialog would stop working.

EDIT: I've updated the component so that the SPC input only emits dynamic metadata updates when a SPC700 status visualizer window is open. This should fix any odd components which choke the CPU when there are a lot of metadata updates, unless you open at least one of the requisite visualizer windows.
  • Last Edit: 18 October, 2010, 07:47:43 PM by kode54

  • Zetto
  • [*][*]
Game Emu Player (foo_gep) by kode54
Reply #159
That fixed it.

superb, thanks for reacting so fast (!) and precise.

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #160
Eke released a stable version of Genesis Plus GX that appears to have some improvements in audio emulation. 

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #161
Eke released a stable version of Genesis Plus GX that appears to have some improvements in audio emulation. 

I went through every revision of ym2612.c that has been posted since my last update, revision 405, and the only notable changes I see are that it now uses a double instead of a float for the internal clock frequency, which doesn't affect foo_gep because it forces an exact ratio of samples to clocks, and thus would only have a fraction of 1Hz of effect on the pitch, if that, and not any effect on the samples generated. There's also code which I've left out for truncating the least significant bits of the sample data to reduce the output resolution below the actual hardware's 14 bits per sample, although the emulator itself defaults to full precision. All of the code related to that involves truncating the initialization of the total level table (tl_tab) and has no effect when the precision is set to the maximum. In fact, the only change I see that would have any effect is that the channel values are now truncated to +/- 8192 instead of +8191 to -8192, and that shouldn't have an audible effect.

(Another change unrelated to the original code, but my implementation also halves the volume of the output to avoid clipping, since it outputs 16-bit samples, and the total of 6 times +/- 8192 is +/- 49152. The resampler that processes the output ends up doubling the volume anyway, but yeah, that's one bit of precision lost from the total volume level.)

I have changed the clipping range to match the latest, although I have not added the code to reduce the output sample precision.

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #162
Cool, thanks for the quick update.  Could some of the botched notes on certain tracks be affected by a difference in the clock to sample ratio?  Maybe an instruction periodically gets "rounded-off?"  I use a VGM-to-ROM builder on the affected tracks and they play perfectly in Genesis Plus GX (and the SDL port, too, for convenience, and Fusion).  I've included a ROM with the builder containing four problem tracks.  The Alisia Dragoon track is probably the most obviously wrong.  The others miss a bass note at regular intervals (maybe a couple times per loop).  Hopefully you hear what I describe.

http://www.sendspace.com/file/2xv9x9

  • Zetto
  • [*][*]
Game Emu Player (foo_gep) by kode54
Reply #163
Hey kode54,

Seems like foo_gep doesn't support fading for kss files or maybe I'm missing something here. Regardless of the value I put in the m3u playlist, it won't fade. I wan't to convert some kss files to wav/mp3 - looping 2 times and fade out at the end.

I need tagging capabilities, that's the only reason I'm converting. Would adding tagging support in foo_gep for formats that don't support them natively be a major pain / would it be possible to begin with?

Oh yeah I also tried foo_customdb, but that's not satisfactory for me.

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #164
The Genesis PSG is too soft compared to Genesis Plus GX and Fusion.

Game Emu Player (foo_gep) by kode54
Reply #165
Great work on this plugin. Was a while since I last went through my VGM collection and I must say the sound of this thing has improved since then. However there are some small things still that does not sound completely right.
1. The SMS PSG noise channel is too loud. I've compared it to in_vgm (without "boost noise") and Fusion. This may affect the Genesis PSG as well.
2. If SmartOne does not have this in his list of problematic VGMs already: Sonic 2, Wing Fortress Zone. First tone is "out of tune" so to speak. Haven't tested it in any emulator but I know for sure this VGM used to sound right in other players.
Then I have a little feature request. The ability to slow down tracks to 50Hz (as most are recorded in 60Hz mode and we european guys used to hear them in their slow versions). This applies to VGM but maybe also to other formats.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #166
I already fixed Wing Fortress Zone rip by redumping it and trimming according to the loop specifications on the original track, and it no longer exhibits the problem. Only Project2612 seemed to ignore my report to the IRC channel in regard to that redump.

As for slowing the tempo down, you can easily do that with the GEP control dialog in the View menu, but it works in percentage instead of Hz, since most of the formats supported by Game_Music_Emu do not operate on exactly 60Hz as a reference timer. Not to mention that slowdown only affects games which were poorly localized and/or on specific hardware, since it's pretty braindead to not adjust the tempo versus video standard for European releases. Then again, plenty of developers were this lazy, so whatever. (This did not affect consoles such as the SNES, where the SPC700 had the same reference timer rates and sample rate output independent of the video hardware. But yes, the tempo setting will slow them down, so you can pretend your SNES music is slowed down in PAL land too.)

I also posted a fix for a bug where seeking backwards in any timed track would cause it to play indefinitely even when it wasn't configured to do so.
  • Last Edit: 09 November, 2010, 08:30:02 PM by kode54

Game Emu Player (foo_gep) by kode54
Reply #167
I already fixed Wing Fortress Zone rip by redumping it and trimming according to the loop specifications on the original track, and it no longer exhibits the problem. Only Project2612 seemed to ignore my report to the IRC channel in regard to that redump.

As for slowing the tempo down, you can easily do that with the GEP control dialog in the View menu, but it works in percentage instead of Hz, since most of the formats supported by Game_Music_Emu do not operate on exactly 60Hz as a reference timer. Not to mention that slowdown only affects games which were poorly localized and/or on specific hardware, since it's pretty braindead to not adjust the tempo versus video standard for European releases. Then again, plenty of developers were this lazy, so whatever. (This did not affect consoles such as the SNES, where the SPC700 had the same reference timer rates and sample rate output independent of the video hardware. But yes, the tempo setting will slow them down, so you can pretend your SNES music is slowed down in PAL land too.)

I also posted a fix for a bug where seeking backwards in any timed track would cause it to play indefinitely even when it wasn't configured to do so.

Thanks a lot. Finally Wing Fortress sounds like it should .
I had forgot about that GEP control panel but now that I rediscovered it, I have another bug to report. It is impossible to tab through the controls in this dialog, and for me as a blind person that makes the whole thing unusable.
Also, how about the SMS PSG noise channel? I know this has been discussed before in the Sega community, however, the current setting is inaccurate even though some think it sounds better.
Thanks again for your great work.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #168
Fixed keyboard navigation in that dialog. I completely forgot about the modeless_dialog_manager service. (Although if I needed keyboard filtering for more advanced things like ctrl-tab navigation of tab controls, I would have to register a more advanced messagefilter.)

I'm not sure about that PSG loudness issue, since, like most of the sound chip emulators in blargg's Game_Music_Emu library, the PSG is not my code, so I don't know the correct way to adjust the relative volume levels. I could look at other emulators, but that's only what some other emulator author decided, not really a guaranteed accurate volume ratio. Well, unless they measured it.
  • Last Edit: 10 November, 2010, 03:41:51 AM by kode54

Game Emu Player (foo_gep) by kode54
Reply #169
Fixed keyboard navigation in that dialog. I completely forgot about the modeless_dialog_manager service. (Although if I needed keyboard filtering for more advanced things like ctrl-tab navigation of tab controls, I would have to register a more advanced messagefilter.)

I'm not sure about that PSG loudness issue, since, like most of the sound chip emulators in blargg's Game_Music_Emu library, the PSG is not my code, so I don't know the correct way to adjust the relative volume levels. I could look at other emulators, but that's only what some other emulator author decided, not really a guaranteed accurate volume ratio. Well, unless they measured it.


Thanks again, now it works fine.
About the PSG: Yeah, I thought so. If it is not possible to make Blargg change his stuff (I don't know if he's even active anymore) I think you should try to get permission to use Maxim's PSG (the one used in in_vgm for Winamp). It is very accurate.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #170
That other PSG may help with adjusting the correct volume levels, assuming it's a proper reference. I'm not even sure if following the other emulators is a good idea unless they're already modeled after the actual hardware. (I can probably adjust the volume levels pretty easily, since each PSG channel also has its own volume control relative to the rest of the PSG channels, and then the GYM and VGM players can control relative volume between the FM chips, the PSG, and the DAC channel. I just don't know if I should.)

Game Emu Player (foo_gep) by kode54
Reply #171
That other PSG may help with adjusting the correct volume levels, assuming it's a proper reference. I'm not even sure if following the other emulators is a good idea unless they're already modeled after the actual hardware. (I can probably adjust the volume levels pretty easily, since each PSG channel also has its own volume control relative to the rest of the PSG channels, and then the GYM and VGM players can control relative volume between the FM chips, the PSG, and the DAC channel. I just don't know if I should.)


If you compare the current foo_gep with Kega Fusion, which is a de facto YM2612 and PSG reference, it's obvious that Blargg's PSG is less accurate. Maxim's PSG is almost identical to Fusion's (they might even be completely identical, but I'm not sure) and it has been used in multiple emulators and players. As you say it might be possible to fiddle with that channel's volume in the current implementation, the downside to that is that you'd have to guess how much to lower the volume of the noise channel to get it right and obviously it would be better with a system where the balance is right from the start.
A side note is that most players and emulators of the Master System have an option to boost the PSG noise channel, because it's pretty quiet by default. It seems like Blargg has that from the start, but there might be some switch in his code to turn it off.
I have some samples to compare the two PSGs but I don't know how to attach files here (or even if it is possible) and I have nowhere to upload them to either.
Thanks again for doing all this great work.

  • SmartOne
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #172
Is there an internal filter on the SN76489?  It sounds a bit muffled.

  • Vagabond
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #173
Having some issues with NSFE files—they don't load in the proper order. I compared GEP with NotSo Fatso in Winamp and found that tracks load in the correct order in Fatso. Would I need to alter GEP settings for it to be fixed? I haven't changed any of the default settings.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #174
Having some issues with NSFE files—they don't load in the proper order. I compared GEP with NotSo Fatso in Winamp and found that tracks load in the correct order in Fatso. Would I need to alter GEP settings for it to be fixed? I haven't changed any of the default settings.


Either change your default incoming file sort option to use %path% instead of %path_sort%, or wait for me to add %tracknumber% enumeration to NSFE files and add %tracknumber% to your default sort field.

The problem is that I enumerate the subsongs in the correct internal playlist order, but I expose the subsong numbers as the internal subsong numbers, rather than indexes into the internal playlist. The reason for this is so that each subsong number relates to the internal title/length/fade information. Otherwise, every time you edit the internal playlist, you would have to delete all the NSFE's tracks from the playlist and readd it.