Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP MIDIplay v2 #222

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

WIP MIDIplay v2 #222

wants to merge 1 commit into from

Conversation

jpcima
Copy link
Collaborator

@jpcima jpcima commented Jun 4, 2019

⚠️ Not ready for merge

Beginning of "v2" work for the MIDI player

For now, code is kept mostly as usual, there will be more rearranging.
One of the things is to split the huge structure.

It is separated in distinct source files for each logical part, if you agree with it.
Files are tagged with an OPLMIDI identifier.

The term of "chip voices" is adopted in file naming, does not exist yet in source.
It's the intent to be more generic, and the idea to be associated to chip channels in 1..* way.
It's the place for a kind of polymorphic structure which can host a voice of any kind.
As such, it's intended to have the definition for "FM voice", "rhythm voice", "PSG", "PCM" etc.

The voices will be able to be type-switched for dynamic 2-op/4-op conversion.
A tagged union will be appropriate for implementing.

Other things:

  • copy constructors, as when resizing channels when adding devices/chips: eliminate
  • nested structures remaining: move to upper level, rename as needed
  • add generic pool of memory; it will ease implementing a buffering of note-offs, and fix in that way the "Dance of sugar-plum fairy" that Joel has noted, but without counting on single-time note keying.
  • I want also to setup the channel<->voice Location by a better linked model which accessible by both directions

@Wohlstand
Copy link
Owner

Looks like this needs for some updates / reworks after my recent refactoring I was done 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants