sneakernets / dmxopl Goto Github PK
View Code? Open in Web Editor NEWYMF262-enhanced FM patch set for Doom and source ports.
License: MIT License
YMF262-enhanced FM patch set for Doom and source ports.
License: MIT License
Patch gave me a replacement today, I'll take a look at it.
I may have to replace the toms with the older ones, as the new ones I just can't figure out how to make louder....
But I would like to salvage the idea, somehow, and make it work -- somehow.
Cymbals need some cleaning up if possible. The current version is a compromise for DMX, the WOPL version wouldn't need to worry about this. Crashes could be better, ride bell too.
Lee Jackson strikes again, abusing snares. Fix snares for now until libADLMIDI handles it.
Hi,
I have some patches I'd like to contribute, but I am unsure of what process is in place. That is, how should individual patches be delivered to the repo?
Br.
Andreas
I've noticed that splitting up the XG/GS sets into distinct wopl
files is a good way to start a massive headache. The only real problems between the two formats are related to the drumkits, so perhaps a software drum remapping (as BASSMIDI does) is the way to go here. Unfortunately, that's out of my hands.
The main issue is having GZDoom's LIBADL implementation follow these rules, as that is where my bank will have the most play - if GZDoom's LIBADL even sees GS/XG instruments at this point, which I don't think it does. I may be wrong though...
Is the project still active?
One my friend is interested for SC8820 set as he using some instruments in his MIDI files on the SCVA thing.
A little trick I found with GS instruments (to knock it out of XG mode)
Line 989 of adlmidi_midiplay.cpp
:
bank = (uint16_t(Ch[channel].bank_msb) * 256) + uint16_t(Ch[channel].bank_lsb);
Should be
bank = (uint16_t(Ch[channel].bank_msb)) + uint16_t(Ch[channel].bank_lsb);
This allows GS to work for now.
What I have is "okay" for now, but it just sounds like a trombone section sometimes. There may be no way to really solve this, but we can try!
As the title says. D_TENSE is way too loud.
Thanks to a friend that noticed some of his midi files broke on some xylophone parts, sure enough, the top range that one would expect to play does not play. culprit? the one octave offset.
On some voices this is unavoidable. however, on those that can be fixed, let's fix it. Voices that are expected to play high ranges shouldn't be limited at all.
Finally found out what was breaking all my patches, you know, the ones that sounded like crap on DMX? Yeah... The carrier Level of the second voice is always the carrier level of the first voice. Let me explain.
When a Double Voice instrument is played, both voices' carrier waves will play as if they have the same volume level - which is determined by the first voice. So, if you have 63 for the first voice, and 45 for the second - well, too bad, you get 63 for both.
The reason I never ran into this is that I started only recently doing that kind of voice setup, while the others matched carrier wave volumes.
I don't know what other properties DMX reads from the first voice, but this is definitely one of them. This hasn't been documented anywhere, as far as I know. In fact, none of DMX has been documented, even though the source code is available.
I had a discussion with one of the contributors, I may be going a little too ambitious on some instruments. Not sure what to do here. We're at this point, which I guess is good...
using my android player (libADLMIDI) the ttd02.mid track is rendering very weird (alot of bass note are cut)
it might be linked to the way gen_adldata compile your bank
you can find the track here
https://www.transporttycoon.net/music
Listening with a good Hi-Fi setup, the song here
https://instaud.io/private/0bea371c70161b688c67b509cdff7396aa9a0055
Has a lot of unneeded bass in the short guiro.
Whooops! I need to either revert a lot of stuff or just redo the volumes.
Compared to SC-55 (or even that damned Microsoft GS Synth) they are totally different and hardly resemble what they're supposed to be, ESPECIALLY at lower octaves.
While I experimented with these two, I doubt I reached the optimum. Maybe I was going in the totally wrong direction ( ͡° ͜ʖ ͡°)
P.S. If you need more midis for testing purposed, I can "donate" some of mine. Downloaded them a goood while ago from an ancient japanese site, interestingly they're so good I listen to them UNIRONICALLY. Since japanese VN music from 90's was so damn complex, it's a good opportunity to test less used instruments. such as Tinkle Bell ;)
UPDATE: Msx box is done.
I realize that this project has been dormant for over a year, mostly due to Real Life ™️ getting in the way. Now that Eternity Engine has ADLMIDI support and life has calmed down considerably, I can begin working on this project again.
A list of things I want to address:
Tone down the detune I guess? I hate that I have to do that...
How do I use this with gzdoom? Maybe I'm missing something, but I haven't been able to find clear instructions anywhere.
I'm using gzdoom 3.1.0
See discussion at f54a1e9.
Instrument changes described, I might open a PR if needed.
The project has been dormant for a while, being pretty much "done" for the most part, save for some drum kits and some GS/XG instruments that are being done "when I get around to it". But there are some instruments that I think need some work now that I've heard them enough:
Somewhat similar to #18 - rock organ patch is so "harsh" that it sounds like some kind of french horn or even tremolo strings ensemble (I even made an experiment swapping strings patch with rock "organ" one, it didn't sound that bad o.O)
There might be no way to solve this (at least I can't), but maybe...
P.S. If it helps a little - here is how I made rock organ in my OPN2 bank. Sounds rather hollow, though.
To get myself back into things, I've decided to make a OPL/OPLL style General MIDI set. Nothing fancy here, just using the Sine Wave. I'm going to be working on DMXOPN2 again soon, so perhaps it's a form of "practice".
Since Freedom's toms are so good, let's incorporate them somehow.
D_DOOM intro is not playing properly, with very loud square waves playing in the bass. I think this might be an SC-55 sampling trick.
Doesn't sound good when used for guitar passages (funny that)
I cannot stay satisfied with the current Piano, even if it's a Yamaha preset. What I want to use aliases on Emulators. Now what?
DMX Bugs require me to turn down the volume!
While I like the patch we have, it breaks in DMX due to DMX failing so hard with AM mode (Why??!)
Likely reverting to the old patch, but maybe I don't have to (Tyrian?)
DMX cuts the second voice of double voiced instruments when channel pressure is maxed out. Make sure that all double voices sound reasonably good with the second voice disabled.
Basically any double voices that use the extra channel to add more harmonics to the sound (but aren't 100% needed) need to be the second voice. It'd be embarrassing if the harmonics were the primary voice and the fundamentals are placed on the second voice.
Piano is still too loud for some midis and not loud enough for others. either I'm wrong or they are. HMM. Better figure this out.
Sigh. DMX bugs came out of the woodwork when I made my new hats. Figure out a way to fix this.
Slap Bass patches need to be updated to a) be less loud, and b) match SC55/SC88 patches.
Ideas:
Since your latest update I'm having issues with the track ttd02.mid (Little Red Diesel)
Alot of notes are cut no matter how much OPL3 core I emulate.
Your can test with the latest version of my MIDI Player (1.6.9)
Since this discovery today, Let's using the additional waveforms!
I'm pondering freezing this project and moving over to "DMXOPL3".
FF6 and FF7 soundtrack exposed these issues:
Since I'm not targeting DMX exclusively anymore, I can finally have some hi-hats that aren't awful. If you feel like helping out let me know. they need to blend well with everything else, obviously.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.