VOGONS


First post, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie

Hello!

It's my OPL3 banks editor which supports different bank formats (currently implemented reading/writing of OP3 [Junglevision], OP2 [DMX], TMB [Apogee Sound System, known from Duke Nukem 3D], other file formats are coming soon). Editor uses DosBox 0.74's (since 1.2.3-beta, replaced with Nuked) OPL3 emulator to provide sound testing.

Editor supports opening from command line (you freely can associate bank files with editor program to open with it) and supports drag & drop to open a bank files. In the editor are pop-up hints about each parameter and it's sense.

28254525-434cb8e4-6ab6-11e7-85e0-906fc1f91434.png

28255004-d5418ce4-6aba-11e7-8c69-b9f49dc773f7.png

Latest versions are available here:
https://github.com/Wohlstand/OPL3BankEditor/releases

Source code of editor and fresh Dev builds (built via CI servers): (to build you need to have a Qt 5)
https://github.com/Wohlstand/OPL3BankEditor

Trivia: Because different bank formats supports different parameters, I going to implement my own bank format for libADLMIDI usage as default custom bank format to support a lot of parameters where we are know.
(For example, double-voice of 2-operator channels mode supported only on DMX's banks, but it is not allows usage of all 127 drums, there are limited with GeneralMIDI instruments only, OP2 and TMB are supports using of any of 127 drum instruments for any cases, but TMB supports only one 2-operator voice per instrument, and OP3 and DMX are not supports velocity offset value which on TMB. OP3 also not supports note offset which supported on DMX and on TMB)

Last edited by Wohlstand on 2017-07-17, 08:51. Edited 4 times in total.

Reply 1 of 44, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

I'd try it, but it won't compile. Can you help me build this?

I had to install QT5, the multimedia libraries to get QAudioOutput, and make QT5 default before I got this far on command line. But QT creator still won't find QAudioOutput 😀

src/bank_editor.cpp: In member function ‘void BankEditor::loadInstrument()’:
src/bank_editor.cpp:472:70: error: ‘FmBank::Instrument::Connections’ is not a class or namespace
ui->am1->setChecked( m_curInst->connection1==FmBank::Instrument::Connections::AM );

Reply 2 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
Jepael wrote:
I'd try it, but it won't compile. Can you help me build this? […]
Show full quote

I'd try it, but it won't compile. Can you help me build this?

I had to install QT5, the multimedia libraries to get QAudioOutput, and make QT5 default before I got this far on command line. But QT creator still won't find QAudioOutput 😀

src/bank_editor.cpp: In member function ‘void BankEditor::loadInstrument()’:
src/bank_editor.cpp:472:70: error: ‘FmBank::Instrument::Connections’ is not a class or namespace
ui->am1->setChecked( m_curInst->connection1==FmBank::Instrument::Connections::AM );

That wired, because error happen because not Qt: because your compiler wasn't correctly detected a member of enum "Connections". That successfully building on gcc 4.8/4.9, but let me come to home to let me check or a thing, then I'll notify you when pull update from repo. But you just can remove "::Connections" in that function (because ennui values are exporting into environment), and retry build

Reply 3 of 44, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

OK, I managed to find a way to compile it under QT5 (it was very difficult to find how to change it, who on earth designed the UI).

So it runs now, but no sound output.

using null output device, none available 

I actually don't know what prints this, maybe QAudioDeviceInfo::defaultOutputDevice(), but I bet it cannot find the default output device.

Reply 4 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
Jepael wrote:
OK, I managed to find a way to compile it under QT5 (it was very difficult to find how to change it, who on earth designed the U […]
Show full quote

OK, I managed to find a way to compile it under QT5 (it was very difficult to find how to change it, who on earth designed the UI).

So it runs now, but no sound output.

using null output device, none available 

I actually don't know what prints this, maybe QAudioDeviceInfo::defaultOutputDevice(), but I bet it cannot find the default output device.

Are you have installed PulseAudio? Anyway, I totally forgot to bind manual audio device selecting that is very important especially for case if default audio device is wrong

Reply 5 of 44, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

Well, again bad documentation, it just needed to install libqt5multimedia5-plugins separately and it can find a default device now.

Thank you for your support. This tool may come in handy someday. First thing that comes to my mind is to add qtserial support to send commands to a retro PC so it can be used to control an actual OPL chip in real machine.

Reply 6 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
Jepael wrote:

Well, again bad documentation, it just needed to install libqt5multimedia5-plugins separately and it can find a default device now.

Thank you for your support. This tool may come in handy someday. First thing that comes to my mind is to add qtserial support to send commands to a retro PC so it can be used to control an actual OPL chip in real machine.

Or even you have C-Media (which has chip with FM synth) or Sound Blaster 16 PCI card which has that chip and you can plug that on modern machine, but on Linux that would work much better because drivers are works fine or we are even directly send commands to OPL chip by address requests

Reply 7 of 44, by MusicallyInspired

User metadata
Rank Oldbie
Rank
Oldbie

This is fantastic! Any plans to support the INS/BNK format from the DOS-based Insmaker program? If you can support BNK we can use it in conjunction with SCI Companion and create patch resource files for Sierra's SCI engine for fangames much easier without needing DOSBox for Insmaker.

Or for that matter, what do you think the chances are of support Sierra's Adlib SCI patch format directly?

Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.

Reply 8 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
MusicallyInspired wrote:

Any plans to support the INS/BNK format from the DOS-based Insmaker program? If you can support BNK we can use it in conjunction with SCI Companion and create patch resource files for Sierra's SCI engine for fangames much easier without needing DOSBox for Insmaker.

Or for that matter, what do you think the chances are of support Sierra's Adlib SCI patch format directly?

Yes, I wanna support those formats too (BNK I going to implement today at evening (by Moscow time), but I also must to finish editing of AdLib-moded drums (lock unused operators for tom/snare/hat/cymbal) fix a wrong drum testing in 5-channel mode which currently producing incorrect sound), but I also going to make an import dialog (to open single-instrument files (SBI/INS) and some set of instruments from another banks or even music files like IMF/CMF. I have SBI specification, [it's so simple and easy], but I needed for INS specification ) and I think, I'll allow explort instruments as single-instrument files (SBI/INS/etc.). Also to have support of bank files with a ton of instruments (more than 127), I will add "rubber" mode where each instrument will be added/removed instead of editing one of pre-defined 127 slots per melodic/percussion sets.
EDIT: So, I found a specifications here:
http://www.shikadi.net/moddingwiki/AdLib_Instrument_Format
http://www.shikadi.net/moddingwiki/AdLib_Inst … ent_Bank_Format
Anyway, adding file format is very fast precedure, and I think, I'll do fix of AdLib drum testing after (I added that since I implemented IBK format support [only on GitHub]).

Also: this editor itself is my very old dream which I done myself 8 years layer, but 8 years ago I wasn't skilled like now, but I also annoyed to use DosBox with SBTimbre too, I used it to edit very limited IBK-files while I have OP2/OP3 files with double-voice, full-featured two/four-operator drums and 4-operator support. And I had to use Jemmie O'Connel's driver for Windows 3.1 to play music on custom banks. But limit is 5-channel drums where I can't normally play full-featured drums like most of banks which are arround.

Reply 9 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie

Beta-version which now supports IBK and experimentally BNK files, and now supports instrument importing from another banks is available!
https://github.com/Wohlstand/OPL3BankEditor/r … /tag/1.2.1-beta
BNK support is experimental yet, because saved BNK files are crashing INSMAKER on attempt to open my files.

Reply 12 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
Stretch wrote:

This is a nice program. Are there any plans for Adlib Gold bnk files? How about Linux sb and o3 bank files?

I need specifications for them to add support. BNK is experimental, it works for read and write, but result is not liked by AdLib's bank editor which crashing.

Reply 13 of 44, by Stretch

User metadata
Rank Member
Rank
Member

glib19f.tar.gz from Index of /public/ftp/pub/Linux/apps/sound has a file sbvoice.doc which has the specs for the extended sbi format for Linux sb and o3 OPL patch files.

I don't know about the specs for Adlib Gold bnk format.

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 14 of 44, by gamax92

User metadata
Rank Newbie
Rank
Newbie

The sb and o3 files are just 128 SBI/2OP/4OP instrument patches concatenated together into one file, 4OP patches seem to have an addition 8 bytes than SBI/2OP patches.
That sbvoice.doc file seems to be good at describing the format of the individual patches
I had been using some cmf.txt document but now realize that all my custom .sb files need to be redone, oops.
There's also this discussion in this other topic about the file format: Anyone here know about sbiload's .sb .o3 files?

Would love to see this supported in this bank editor, very well done.

Reply 15 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
gamax92 wrote:
The sb and o3 files are just 128 SBI/2OP/4OP instrument patches concatenated together into one file, 4OP patches seem to have an […]
Show full quote

The sb and o3 files are just 128 SBI/2OP/4OP instrument patches concatenated together into one file, 4OP patches seem to have an addition 8 bytes than SBI/2OP patches.
That sbvoice.doc file seems to be good at describing the format of the individual patches
I had been using some cmf.txt document but now realize that all my custom .sb files need to be redone, oops.
There's also this discussion in this other topic about the file format: Anyone here know about sbiload's .sb .o3 files?

Would love to see this supported in this bank editor, very well done.

Can you also send me some of those files to let me implement support of them more accurate?

Reply 16 of 44, by Stretch

User metadata
Rank Member
Rank
Member

[/quote]
Can you also send me some of those files to let me implement support of them more accurate?[/quote]

adagio05.tar.gz from Index of /packages/linux-tsx-11/packages/sound has the OPL2 sb files and the OPL3 o3 files.

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 17 of 44, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

This program would be a gods-end to making FM MIDI on Linux not sound completely terrible, if it can export .sb and .o3 files properly for sbiload to function.

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

Reply 18 of 44, by Wohlstand

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

This program would be a gods-end to making FM MIDI on Linux not sound completely terrible if it can export .sb and .o3 files properly for "sbiload()" to function.

I'm in work to support those formats, there are not hard and primarily based on already supported SBI format

Reply 19 of 44, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

Thanks a ton for this, Wohlstand! I look forward to seeing this support .sb/.o3 files.

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