VOGONS


Windows, Doom, Apogee OPL3 Synthesizer.

Topic actions

Reply 60 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

No, that's because Winamp's MIDI player doesn't reset the driver when changing between tracks so if you were playing a MIDI which had a MIDI channel other than 10 acting as drums, it remembers the Bank Select value from the last MIDI played unless it's been reset.

That's partly the reason why I have hardcoded channel 10 to always be a percussion track for the time being, until I can get System Exclusive resets to handle this behaviour depending if MIDI's have them or not. (which then you can safely blame whoever made the MIDI for being slack. 😜 I'm also guilty as charged in that respect 😁)

The polyphony note stealing bug, I haven't quite worked out the cause of this yet but it doesn't seem to happen with all MIDI's which is strange. But you might find from time to time, single voices stealing or blocking notes when they shouldn't (ie: polyphony is well below 18 audible voices, channel most certainly NOT in mono/legato mode).

EDIT: Found it. When hardcoding ch10, i forgot to do so for note offs, so drum notes that have since been let go, the synth still thought it was being held. Binary release soonish. Preliminary true 4-op patch support is functional, though it needs further testing.

EDIT2: New binary. Please redownload. 😀)

  • Preliminary "true 4-op" patch support; see patch #33 finger bass on the custom 2x2op dll for a teaser. (try it with this midi)
  • Fixed polyphony issues; my fault due to drum note offs and forgetting to hardcode ch10 on that as well.
  • Slight modifications to custom bank.

Reply 61 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

OK guys. No more Kernel driver anymore!

I have updated my forked driver again to announce Hardware OPL3 Passthrough support! inpout32.dll (x86/64-bit compatible) is the used interface for this, and is also open source. (The same DLL used with DOSBOX-SVN DAUM for OPL passthrough) I have also changed the MIDI device names to reflect this difference.

You will need to install this DLL (included in the binary download) in your %WINDIR% (eg: C:\Windows) directory before attempting to use the OPL3HW builds. Yes this works in Win7 x64. I'm using the CMI8738 PCI card for testing as we speak.

Git repo: https://bitbucket.org/djtubig-malicex/opl3-sy … driver/overview
Win32 Binaries: https://dl.dropboxusercontent.com/u/1287967/opl3driver.rar

IMPORTANT NOTE: Currently they are hardcoded to 0x388 due to lack of a configuration utility as of yet. If you require a specific port to test the OPL3HW binaries, please reply to this topic and I will give you a build for those until I get the configuration tool finished.

Please report on any issues and things like that.

Enjoy!

NB: I am not responsible for any possible result of damage to your hardware from using this software. Use at your own risk. 😉
EDIT: whoops. made a quick fix to the opl3hw dlls. Seems I need to keep the wave renderer enabled for now (taking up cycles rendering silence, since the MIDI rendering routine is tied into it :\)

Reply 62 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

Back from visiting my grandmother down in Texas.

What I meant by the drum thing, I don't know if it's winamp's fault because the MIDI's I listen to aren't even changing Bank MSB or LSB, and the problem only happens on very few soundfonts\synths. When it happens that channel just turns into what you'd think is a "drumset tester" as each note to it plays the next part of the drumset from left to right.

I'm testing out your newest thing right now. Great work with this by the way I've been wanting a way to play MIDI files with actual (or in this case emulated) OPL3 sounds without having to use the OPL3 soundfont.

EDIT: that 2x2opl set sounds interesting but HEAVILY ugly for most of the MIDI files I listen too... Is it just me or are the "4op" instruments have smoother panning than just "hard left\right"?

EDIT 2: that problem when a song loops all the channels mysteriously become drumkits still happens... Is there any way in Winamp's MIDI plugin I can send resets or something? This does NOT affect BASSMIDIDrv with GeneralUserGS or even the Microsoft Synth...

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 63 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

What I meant by the drum thing, I don't know if it's winamp's fault because the MIDI's I listen to aren't even changing Bank MSB or LSB, and the problem only happens on very few soundfonts\synths. When it happens that channel just turns into what you'd think is a "drumset tester" as each note to it plays the next part of the drumset from left to right

Can you post an example MIDI that exhibits this problem? I'm not sure how this is even possible.

DracoNihil wrote:

that 2x2opl set sounds interesting but HEAVILY ugly for most of the MIDI files I listen too... Is it just me or are the "4op" instruments have smoother panning than just "hard left\right"?

It's still experimental. It's not tuned for general listening for now and will probably change or be replaced entirely.
Also no, I have not done "smooth panning" as that is basically 1x2op taking up 2 voices. Jamie O'Connell's Win9x FMSynth driver does this. 2x2op means two different 2op patches stacked together, or in 4op OPL3 terms, ××-AM (Replace xx with FM or AM)

DracoNihil wrote:

that problem when a song loops all the channels mysteriously become drumkits still happens... Is there any way in Winamp's MIDI plugin I can send resets or something? This does NOT affect BASSMIDIDrv with GeneralUserGS or even the Microsoft Synth...

System exclusive reset. I have not supported this yet but it is planned.

Reply 64 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

As requested here they are... it's also worth noting either some of the patches in Fatman don't exist or playing a note on 0 volume and trying to increase it results in no sound.

You can reproduce this weird "every channel turns into drums" by loading Chromium Rev A into BASSMIDIDrv.

Is this a bug with Winamp's midi player?

Attachments

  • Filename
    midisexhibitingbugs.7z
    File size
    32.04 KiB
    Downloads
    168 downloads
    File license
    Fair use/fair dealing exception

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 65 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

As requested here they are... it's also worth noting either some of the patches in Fatman don't exist or playing a note on 0 volume and trying to increase it results in no sound.

This was my fault due to reading Microsoft's incorrectly-termed comment ("volume=0" as opposed to VELOCITY=0). I've fixed this problem and will be available in the next binary release.

DracoNihil wrote:

You can reproduce this weird "every channel turns into drums" by loading Chromium Rev A into BASSMIDIDrv.

Is this a bug with Winamp's midi player?

I'm not sure what "Chromium Rev A" is. (Is it a MIDI? Is it a soundfont? If the latter, this serves no relevance to my bugtesting as I'm not involved with kode54's BASSMIDI driver development)

I have not been able to reproduce the "turn-everything-into-drums" problem you are experiencing with the MIDI's you have provided. Additionally, none of these have loop markers (where I have also tested my own collection of MIDI's with loop markers and have not experienced this problem).
I'm going to need more information I'm afraid.

Reply 66 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

If you use Winamp you can specify it to loop all MIDI's as if they had a loop marker even if they don't. And yes Chrom is a soundfont but it exhibits this problem. The creative soundfonts, GeneralUserGS and ArahcnoSoft do not produce this bug.

This only seems to happen with very select few MIDI files interestingly enough. Anything that was a XMIDI, MDS (Some wierd ass Microsoft format for MIDI that uses RIFF as a container) and sometimes HMI generates this problem when Winamp loops it.

In Winamp's MIDI player go to Looping and say "always" and tick the Infinite box. Let any of the MIDI files in that archive loop on your OPL3 emulator, if it does not trigger the bug then maybe my MIDI plugin is broken somewhere. I haven't updated winamp in quite some time because everytime I update it, it breaks alot of plugins I use.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 67 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

In Winamp's MIDI player go to Looping and say "always" and tick the Infinite box. Let any of the MIDI files in that archive loop on your OPL3 emulator, if it does not trigger the bug then maybe my MIDI plugin is broken somewhere. I haven't updated winamp in quite some time because everytime I update it, it breaks alot of plugins I use.

Already set ever since. I don't experience the problems you are having. For reference, I am using Winamp v5.56 (x86) - Jul 1 2009 with Nullsoft MIDI Player 3.17 [in_midi.dll]

Reply 68 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

That's the same exact version of the plugin I have... I guess it's time to re-install all of Winamp... *grits teeth*

Sorry for troubling you about this...

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 69 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

That's the same exact version of the plugin I have... I guess it's time to re-install all of Winamp... *grits teeth*

Sorry for troubling you about this...

Don't be sorry. It's important I know what different configurations users have and whether or not there are any consistency issues to address. I probably should mention on one of the pages in my plugin co fig the"Fix missing DLS Drum kits" and this other one, are ticked, but i would assume you would have already tried that.
Also are you using streamed or immediate playback mode? I recall having very strange issues with one of them.

Reply 70 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

Immediate playback mode, the only thing I have ticked is Disable SysEx because some songs like to overwrite my General MIDI Master Mix Volume SysEx command I use to tone down the synth so it's not ungodly loud.

EDIT: Setting it to Streamed fixed the problem entirely... what the hell? I guess this was a bug with Winamp after all...

EDIT 2: Setting this crap plugin to Streamed playback makes me have to play the MID file twice just for my volume SysEx to execute, where as on Immediate mode it happens without a hitch, I'm starting to wonder if anyone's ever made a replacement plugin to this POS.

Also one of the songs from CyberBykes, ROCKIT.XMI has stuck notes as a result of playing a organ slide. But this bug was reported before right?

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 71 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

Immediate playback mode, the only thing I have ticked is Disable SysEx because some songs like to overwrite my General MIDI Master Mix Volume SysEx command I use to tone down the synth so it's not ungodly loud.

EDIT: Setting it to Streamed fixed the problem entirely... what the hell? I guess this was a bug with Winamp after all...

Yes.

DracoNihil wrote:

EDIT 2: Setting this crap plugin to Streamed playback makes me have to play the MID file twice just for my volume SysEx to execute, where as on Immediate mode it happens without a hitch, I'm starting to wonder if anyone's ever made a replacement plugin to this POS.

I wouldn't count on this. The need to perform a sysex reset for hardware volume control is impractical for most people. This is too localised of an issue to address.

DracoNihil wrote:

Also one of the songs from CyberBykes, ROCKIT.XMI has stuck notes as a result of playing a organ slide. But this bug was reported before right?

No. But certainly I am trying to eliminate as many of these hanging note problems as they are encountered.

Reply 72 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

I'm attaching the song to better help with debugging. All thanks to Stefan_L for pointing me out to save states to rip the music in the first place.

And I'll say again, thank you ALOT for working on this. Would you mind if I used your code for DOS applications though?

Attachments

  • Filename
    CBYKES_ROCKIT.7z
    File size
    52.06 KiB
    Downloads
    173 downloads
    File license
    Fair use/fair dealing exception

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 73 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

I'm attaching the song to better help with debugging. All thanks to Stefan_L for pointing me out to save states to rip the music in the first place.

Thanks. Looks like I'll need to investigate this particular edge case. I have a feeling it may be related to note-off issues for excessive polyphony/voice allocations or patch changes during a held note. (I had to make some tweaks to fix the sustain pedal bug)

DracoNihil wrote:

And I'll say again, thank you ALOT for working on this. Would you mind if I used your code for DOS applications though?

Although I've made a number of changes since the last binary release, feel free. It's LGPL anyway. It wouldn't have been possible without the effort of original code contributions from khokh2001, DOSBox team and others. 😀

Reply 74 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

I just want to use the code responsible for the MIDI rendering itself, since a little game project I had going I wanted to beable to use OPL3 and mixed PCM for music. (PCM for drumkits, OPL3 for melody)

I'll be looking for some more test case MIDI's that generate stuck notes in the meantime. Really a shame with my issue with Winamp, considering Winamp is dead now. Only recourse is to write my own MIDI input plugin for it... if I even knew how that is.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 75 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

Hi, just posting a major update on my forked driver.

Win32 Binary: https://dl.dropboxusercontent.com/u/1287967/opl3driver.rar
WinRT Binary: https://dl.dropboxusercontent.com/u/1287967/W … exe/opl3emu.dll
Git repo/source: https://bitbucket.org/djtubig-malicex/opl3-synth-driver

Changelog:
[17-JAN-2013] - Major update

  • VGM Logging support (CC119=127 for ON, CC119=0 for OFF. Saves to %TEMP%\opl3vgmlog.vgm for now)
  • Fixed intermittent 4-op -> 2x2op/2op voice stealing issues
  • Fixed voice-stealing problems on patch change (MS's oldest-by-patch policy was flawed)
  • Tweaked Attack/Release range
  • Portamento (CC5/CC65) support for both poly and mono. Using EXP start-end time policy, and sustained pitch tracking. 100Hz update.
  • Modulation wheel (CC1) support. LFO policy is per-voice except for mono legato which follows on previous voice until silence. 100Hz update.
  • Experimental linear pitch envelope support (currently possible with drum patch map only; see 2x2patchtest.h) 100Hz update.
  • Channel Volume = 0 non-zero velocity should still allocate a voice. (thanks DracoNihil)
  • Changes to initialization code structure.
  • Fixed project solution to spit out differentiating filenames depending on use for hardware or emu.

EDIT: This is using khokh2001's custom core. If people are finding the note retrigger bugs are irritating, someone shout.
Also, give this a listen with this build. https://dl.dropboxusercontent.com/u/1287967/unisontest2.mid

Reply 76 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

Tom toms sound really weird now. The stuck note still happens in ROCKIT.MID

Overall I don't notice anything really irritating yet on this new emulation core.

EDIT: Meant to say "tom tom" not kick drum...

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 77 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

Tom toms sound really weird now. The stuck note still happens in ROCKIT.MID

Overall I don't notice anything really irritating yet on this new emulation core.

EDIT: Meant to say "tom tom" not kick drum...

Yeah, I'm having trouble trying to pinpoint a definitive cause-effect scenario of this happening. It also affects certain instances of patch changing, sustained notes and whatnot.
Semi-related, the current binary's .vgm log output is a bit flawed (already fixed in the repo thanks to ValleyBell for pointers). Meanwhile, here's something of a cover straight from my driver:

https://dl.dropboxusercontent.com/u/1287967/o … 3dhaostest3.vgm (10 points if you can guess the game and song haha)
CMI8738 output via driver: https://dl.dropboxusercontent.com/u/1287967/o … est-cmi8738.mp3

EDIT: more test logs:
https://dl.dropboxusercontent.com/u/1287967/o … l3puyo2test.vgm
https://dl.dropboxusercontent.com/u/1287967/o … drocitytest.vgm

Reply 78 of 204, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie
MaliceX wrote:

Changelog:
[17-JAN-2013] - Major update

Isn't today 2014...?

Also I've been listening to a few more songs and can't really see any problems with this emulation core, pretty interesting how this came out of nowhere too.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 79 of 204, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:
MaliceX wrote:

Changelog:
[17-JAN-2013] - Major update

Isn't today 2014...?

ya. oops

DracoNihil wrote:

Also I've been listening to a few more songs and can't really see any problems with this emulation core, pretty interesting how this came out of nowhere too.

Yeah, I fixed the retriggering bug myself on the repo source code. Whether he'll take it on board is up to him. Any other issues I'll leave it to the nitpickers and SB16 experts here on VOGONS to determine. 😜

BTW. I had a look at ROCKIT. The recorded MIDI itself has hanging notes on the organ track. You may want to re-record or at the very least, get me the actual source MIDI, otherwise this is not a driver problem specifically. 😜