jpcima / ADLplug

FM Chip Synthesizer — OPL & OPN — VST/LV2/Standalone

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LV2 presets

jofemodo opened this issue · comments

When running without the native GUI (i.e. Zynthian), no way to select bank/presets.
It would be nice to have a simple way for converting bank/preset libraries to LV2 ttl format.

Adding a new native format to preset2lv2 converter is quite simple:

https://gitlab.com/Jofemodo/preset2lv2

;-)

Thanks

Hello @jofemodo

I have thought a bit of such things, and thought to address them in a different way.

This plugin is made to operate in General MIDI and GS/XG modes.
It's because it's a MIDI driver like found in video games, which are also in this model.

It manages presets in its own way, and it's also beneficial because multi-program can be packed into a chip such as emulations are more computationally efficient.
There are some emulators which are good at avoiding loading CPU in case of idle voices (eg. DOSbox), and some others are terrible (most of OPN ones).

Solution

I think to create a separate projects such as MiniOPL, that is really specialized in playing single instruments, and then I can enable use of traditional LV2 presets.
The mode of operation would be like that of JuceOPLVSTi, but with more ability (most notably, support of the 4-operator timbres).

About converted preset banks, they are likely going to be massive, probably in the 10ths of Megabytes, and I will have to store them in groups. (which DPF doesn't yet have, I'd need to make it myself)

This perspective is also going to help with resolving #61.

But current implementation works OK with LV2 presets. The problem is that we have not such presets. If you could give some tip about the "bank" file format:

https://github.com/jpcima/ADLplug/blob/master/resources/opl3/banks.pak

i would generate the LV2 presets/banks that could be used for integrating the current engine implementation on zynthian. I would implement a new class for the preset2lv2 converter.

No no, this is a format which serves only on the Editor-side.
It's only a pack of banks concatenated together in a Gzip file, preceded by header.

In the synth, there are more state items stored than bank data, which are: chip count, emulator choice, 4op channel mask

If anything will be like a preset to LV2, it's surely the result of getStateInformation which is going to be Juce binary-XML blob.

Anyway have just a bit of patience, I will post a plugin to have it drivable with registers as parameters, which will be more ideal for Zynthian device. I keep you notified about when it's posted, tomorrow possibly.

@jofemodo, this is a OPL3 plugin, mono-timbral and has access to all FM registers as parameters
https://github.com/jpcima/miniopl3

It has also a bank converter wopn-to-lv2-bundle and an example set of 3 banks.

Oh! I'll give this a look, because I'm working in a DAW and using it as a synth, not to playback game MIDIs (I have foobar for that) but to make sound. If this does 4op mode and is an OPL3 then I might pick this over Juice OPL and for my needs close #61, though check there for a possible implementation workaround for the issue at hand. Will this one build a VST on/for Windows at the moment? It doesn't have a release and uses a makefile, I have WSL if I need it. Or is it just not complete yet.

It needs some special work for VST unfortunately which is not yet made.
LV2 and VST are using some different ways to manage their presets and I need to deal with this problem. The project is a good start.

For the case of VST, I wish to offer a converter of 75 or so collected OPL banks into a set of FXB which can load in Reaper, similar as a thing I made for LV2.

Only FXB support right now, but implementing FXP wouldn't be too difficult.
BTW, the new miniopl3 plugin is already integrated in zynthian ;-)

Thanks for letting me know !
FXB support is not intended for Zynthian, it doesn't need, it's to equip miniopl3 to work in commercial VST plugin hosts.
Given that DPF doesn't have this support unfortunately, I'll have to work it around. Without a doubt, it wouldn't be difficut to wrap it as VST directly.