Close

Return of the Polyphonic Sequences

A project log for OPL Studio - OPL2 / OPL3 MIDI Interface

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

maarten-janssenMaarten Janssen 07/23/2022 at 14:440 Comments

Yep, so as the title says polyphonic melody sequences are back! A long time ago I removed them since my first implementation was really cumbersome and required relatively a lot of memory. So to get things done I settled with only monoplhonic sequenses until I would figure out 'how to do it'. Well that time is now! 

Unfortunately no fancy new screenshots or videos this time. They will follow next time once I have the update done...

For a few weeks I have been thinking about how to add back support for polyphonic melody sequences that allow for a lot of flexibility as well as being friendly to the memory usage. The new melody sequences that I'm now working on are basically just straight up recodings of the MIDI events that are received on a certain channel. Of course that's putting it a bit too simplistic since there is some compression going on as well...

The compression is what has been making this new implementaion take such a long time to happen. The code to handle the melody sequences has become considerably more complex if you campare it to the monophonic melodies and I wanted to test my solution before putting it into the OPL Studio code base. Since I'm posting this, obviously testing was successful and I've gone forward with the implementation. 

So apart from being polyphonig; allowing multiple notes to play at the same time, what other benefits are there to this new sequence format??

The new way to store melody sequences does mean some considerable refactoring is needed on the editors and overall playback functionality. Since the new sequences are recording on a 6x greater resolution; MIDI tick instead of sequence step, it means some big changes, also for drum sequences.

It also means that some of the functions in the melody sequence editor maybe don't make a lot of sense anymore. Volume and panning are no longer set for the full sequence. Also note length is no longer relevant, except maybe in step recoding mode. What I will do with these I'm not sure yet...

Overall I'm really happy with the progress with the new sequence format so far. Even if the UI is not fully aligned with it yet, it feel much better just playing around with OPL Studio knowing that it there are less limitations holding you back!

Sequence Parameter Editor

With the new sequences I can also start implementing a long time feature that I want: editing pitch, modulation, volume etc per sequence step. In the sequence editor I want to allow you to open a modal window to edit sequence parameters over time. This will probably be a set of graphs where you will be able to drag set points to change for example volume over time.

The new sequence format allows this, but since that data is compressed in memory it makes editing these detailed sequence parameters a lot more complex in code, so this will still take a while to implement.

New Sequencer Module

Another idea that I want to implement is to group the drum sequencer and the melody sequencer together into a new sequencer module. This new sequencer can then be used for a live performance and the sequence composer will then be just to create longer songs from sequences 'off line'. 

It should allow for 4 different sequences to play at the same time with simple controls aimed at playing live with OPL Studio. Big sequence buttons that show the sequence color and pattern that's playing,  reusing the sequence selection from the composer module, etc.

From the sequencer you can launch into the drum and melody sequencers to edit sequences and at the same time it sould make sequence editing a better experience. Currently only a dingle drum and a single melody sequence will be played. So while editing a drum sequence the melody sequence that is active in the melody sequence eidtor will also play and vice versa. It would be nice if you could hear not just one sequence, but up to 3 other sequences while editing it could be really benefitial and that's what the new sequencer module should allow as well.

Discussions