asb2m10 / dexed

DX7 FM multi plaform/multi format plugin
GNU General Public License v3.0
2.8k stars 241 forks source link

Support for 4-op style operators (YM2151) #163

Open bryc opened 5 years ago

bryc commented 5 years ago

It would be great if Dexed could be used to load and create 4-op patches accurately; even better if it could be used with a DX21 or DX11 directly (same as DX7). I see DX21 sysex import in the TODO of README. There's a DXconvert program for that, and unless there's some real magic tricks, it'd just be an approximation.

Rather than convert the sysex, why not a 4-op edit mode? Add in the TX81Z waveforms. That way, we get the lo-fi 4-op feel, with the added modulation capabilities of TX81Z, which would be awesome! :) And sounds from the arcade/games (YM2151, YM2612/YM2608) would sound closer to the real thing with a 4-op engine, since they use similar internals (YM2164 uses the same pinout and memory map as YM2151 which has tons of documentation/code).

What are your thoughts? I don't think it'd be too hard since they are just a slightly simplified version of DX7's FM engine. The parameters layout would have to change. The only thing that makes the keyboards unique from the Arcades is the firmware which controls 'voice parameters', keyboard scaling/velocity sensitivity, pitch envelope generator. All of that extra stuff is already handled in Dexed.

Also, the 4-op algorithm list are the same used in the Yamaha DX9, which are a subset of DX7 algorithms with operators 1 and 2 disabled. :)

Does this have a place in Dexed, maybe a pull request if you're not up to it?

asb2m10 commented 5 years ago

I already tough of this. At first I was against it, but it would be doable if operator were modules and could be switch from mk1 to ym2151 (btw, the 8-bit engine is based on the YM2151). This way you can support both models. Who care if you only use 4 operator, what is important is what is operator generator is used.

It is just the sysex support that would be difficult to support out of the box. Needs more thinking for this.

nsputnik commented 1 year ago

2 op (OPL and OPL2 chips) would be great addition too. This was used on AdLib cards, SoundBlaster cards, Yamaha Portasound series and mid 80's arcades. I'm not sure there is a standard sysex format for this. Regarding 4 op sysex Martin Tarenskeen has a cool DX/TX sysex conversion project but it is in python. It's not clear what his license is but he is fairly easy to get ahold of. http://dxconvert.martintarenskeen.nl/

bryc commented 1 year ago

As far as I know, OPL was never used in any MIDI based synth that supported SysEx. There was PortaSound but that was basically a toy for kids.

And I hate to shut you down, but OPL instrument support is probably even less likely than DX9/DX21/DX100 instrument support, which looks like a no-go anyway (which is fine, I can get by with the various Sega Genesis VST offerings these days to achieve the same parameter ranges).

DXConvert is super useful too, you can get fairly accurate 4>6op conversions!

nsputnik commented 1 year ago

Sega Genesis/Megadrive used OPN chip, not OLP. OPN is 4 operator, OLP is two operator. There were prosumer keyboards that use OPL like Yamaha's PSR and PSS series in '87-'87. I would not discount them just because they were used in toys. You say you want the 4 Op lofi sound, 2 Op is even more lofi, so you should like that. There is Plouge chipsynth PortaFM as a solution but if we are going beyond 6 Op and will also cover 4 Op then why not 2 Op? Especially if it can be accomplished just by including additional 4 Op and 2 Op algorithms that could disable the other operators/sources/modulators.

bryc commented 1 year ago

Well I wouldn't get your hopes up for OPN or OPL, this issue's nearly 5 years old now. Some knight in shining armor would have to fork it and send in a PR or something, and I imagine it'd be a lot of work too.

I appreciate OPL for what it is, since it still has part of the Yamaha FM algorithm magic. PSR seems interesting, uses the "OPQ" line of chips that I never even knew about, but it seems to be a variant of OPL2. I discounted the PortaSound stuff because the OPLL chip it uses s just a preset machine. Though generally 2-op is severely limited in what sounds you can do. I tried porting some patches from "OutRun", and it gets surprisingly close but sometimes you gotta layer it to make it usable.

mtarenskeen commented 10 months ago

Not a perfect solution, but it is possible to convert patches from the 4-op synths to DX7 compatible SysEx using DXconvert and you can download many patches already converted using DXconvert in my 4OP to DX7 Conversion Project

Dsiclaimer: Results may vary