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

Feat/iterable chronology #21

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open

Conversation

josephlarralde
Copy link
Contributor

This is a breaking change :

  • A Renderer only performs the combine3 operation
  • A Performer has a Renderer and all the Chronologies it needs to, and is supposed to provide a "render" method which calls combine3 under the hood
  • Chronologies have a container template parameter type (e.g. std::list or std::vector) and only store consecutive pairs of starting and ending sets.

* added container template parameter to allow choosing between e.g. list and vector
* changed container type from Events::Set<T> to Events::SetPair<T> because event sets are always picked by successive start/end pairs
base renderer doesn't deal with chronologies anymore, this has to be done by child classes
it now provides minimal functionality (i.e. only combine3 method for now) and has a pure virtual method getNextSetPair which must also be implemented in child classes
the orphaned endings systems has been removed because Chronology should not allow orphaned endings
* renamed nearly all impl classes/files + added new ones
* updated include paths and class names wherever needed
* AbstractPerformer is the base Performer class inheriting from Renderer::Provider
* AbstractPerformer has a protected Renderer but doesn't implement Provider pure virtual methods
* top level classes are children of AbstractPerformer : they implement Provider methods and have a Chronology
josephlarralde and others added 15 commits September 1, 2022 15:49
* added armed / playing / stopped internal state
* added callback setter to allow listening to emitted note events
* anti voice stealing is now a utility (not a strategy anymore)
* added a history of anti voice stealing states to restore it anytime the index jumps
* new peekNextSetPair method returning the next set pair to be rendered by render (useful for playback)
* setCurrentIndex emits all pending note off events, resets all state, then sets the state to armed
…again. Crash comes from somewhere in render (combine3?)
…setChronology that caused a segfault when calling render (e.g. from the ossia binding)
* MINOR : set current index to 0 after setting chronology. Now crashes again. Crash comes from somewhere in render (combine3?)
* Fixed non-initialization of local performer state in case of call to setChronology that caused a segfault when calling render (e.g. from the ossia binding)
josephlarralde and others added 6 commits September 7, 2022 18:03
We need to update the avs from avsHistory in two cases :
* we just looped, which means currentIndex == minIndex
* we moved the cursor manually and called setCurrentIndex, which means we are in Armed state
The "memory" and "functional" headers were used (for std::shared_ptr and 
std::function respectively) but not included. This could break the build 
in some environments. It has been fixed.
These are NOT allNoteOffs as returned by AVS ; they do not include
note offs for notes whose expected duration continues beyond the current
index. Instead, the method simulates releasing all keys ;
however, it does not in fact clear the pendingEndingSets map.
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.

Make MFPRenderer inherit Renderer instead of using composition
3 participants