Home Screen

A project log for OPL2 / OPL3 MIDI Interface and Controller

a MIDI interface for the OPL2 Audio Board and OPL3 Duo!

Maarten JanssenMaarten Janssen 03/09/2021 at 19:050 Comments

Since the last log I've spend a lot of time to make the three modules more functional. The mixer now has a functioning scrollbar so all 16 MIDI channels can be shown in the window. Also the mute and solo buttons have now been implemented. The channel volume sliders do not function yet. They will show the volume of the MIDI channel when changed, but draging the slider has no actual effect yet. Also panning is still missing.

In the drum sequencer the volume slider is now working. Each drum track can be set to a different volume level. Also now the sequencer uses the MIDI controller to play the drums. This means that currently the drums will only use 2-operator drum sounds instead of the 4-op drums I had before. This is only temporary until the MIDI controller code is more capable and can handle 2-op and 4-op on every channel. Currently melodic channels use 4-op instruments and the drum channel uses 2-op instruments.

For the patch editor I only made some small bug fixes and I added a transpose control. 

Home Screen

The biggest visible change is the new home screen from where you can launch the three modules by tapping their icon. I drew the icons myself, taking a lot of inspiration from Windows 3.1 icons and imagining how they could look for the different modules.

The windows now also have a functioning close button that takes you back to the home screen. The app modules do not run in the background yet. For example when the patch editor is closed it is also removed from memory. The patches, though, are kept globally so they will not be erased and any MIDI channel that uses the patch will still sounds exactly as it was edited.

The next step will be to allow the controllers of the modules to run in the background. For example the sequencer can be playing while you edit the instrument patch to immediately hear the change or have live control over the sound. Or you can use the mixer to adjust channel volumes on the fly. The module controllers will work independently of the UI and hold the state of each module. This is to save on the memory consumed by the UI when a module is not actively in use.

Melody Sequencer

I also started working on a melody sequencer module. This one is not very functional yet and can only record and play 16 MIDI note on events on a single channel. It's just a bunch of loose UI elements for now without a window. I first want to flesh out the controllers of the various modules more and improve the MIDI controller to make my life easier to continue with this sequencer.