Isle
Loading...
Searching...
No Matches
MxMIDIPresenter Class Reference

MIDI presenter class responsible for handling playback of MIDI music streams. More...

#include <mxmidipresenter.h>

Inheritance diagram for MxMIDIPresenter:
Collaboration diagram for MxMIDIPresenter:

Public Member Functions

 MxMIDIPresenter ()
 Constructs an MxMIDIPresenter object and initializes its data. More...
 
 ~MxMIDIPresenter () override
 Destructor, ensures proper resource cleanup for MIDI playback. More...
 
const char * ClassName () const override
 Returns the class name for run-time type identification. More...
 
MxBool IsA (const char *p_name) const override
 Checks if this instance matches a class type by name. More...
 
void ReadyTickle () override
 Tickle state for preparing the presenter before playback starts. More...
 
void StartingTickle () override
 Tickle state for initializing MIDI playback of the current chunk. More...
 
void StreamingTickle () override
 Tickle state for streaming (playing) the MIDI chunk. More...
 
void DoneTickle () override
 Tickle state signaling that playback is done. More...
 
void Destroy () override
 Cleanup resources, free MIDI data, and deinitialize MIDI. More...
 
void EndAction () override
 Called when playback/action is finished or needs to be ended. More...
 
MxResult PutData () override
 Actually provides MIDI stream data to the playback system. More...
 
void SetVolume (MxS32 p_volume) override
 Sets the playback volume for MIDI music. More...
 
- Public Member Functions inherited from MxMusicPresenter
 MxMusicPresenter ()
 [AI] Constructs and initializes the music presenter object. More...
 
 ~MxMusicPresenter () override
 [AI] Destroys the music presenter instance and unregisters from the music manager. More...
 
const char * ClassName () const override
 [AI] Returns the runtime class name of the MxMusicPresenter. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks if this object's class matches or is derived from the specified name. More...
 
MxResult AddToManager () override
 [AI] Registers this music presenter with the MxMusicManager. More...
 
void Destroy () override
 [AI] Destroys this presenter, safely unregisters from music manager. More...
 
- Public Member Functions inherited from MxAudioPresenter
 MxAudioPresenter ()
 [AI] Constructs an audio presenter with default volume at 100%. More...
 
virtual MxS32 GetVolume ()
 [AI] Returns the current runtime audio volume for this presenter (0-100). More...
 
virtual void SetVolume (MxS32 p_volume)
 [AI] Sets the presentation volume for playback (0-100). More...
 
const char * ClassName () const override
 [AI] Returns the run-time class name string. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks if this object is or derives from the given class name. More...
 
- Public Member Functions inherited from MxMediaPresenter
 MxMediaPresenter ()
 [AI] Constructs the presenter, initializing all member variables. More...
 
 ~MxMediaPresenter () override
 [AI] Destructor; cleans up and optionally destroys all internal resources as well as the MxDSSubscriber and chunk list/cursor. More...
 
void Destroy () override
 [AI] Cleans up internal resources and resets the presenter to an uninitialized state. More...
 
MxResult Tickle () override
 [AI] Advances the presenter's state and media stream, if any, by tickling (i.e., updating) components. More...
 
const char * ClassName () const override
 [AI] Returns the class name for this presenter (see HandlerClassName()). More...
 
MxBool IsA (const char *p_name) const override
 [AI] Returns TRUE if the provided class name matches this class or any of its parents. More...
 
void StreamingTickle () override
 [AI] Per-frame update when streaming the media stream. More...
 
void RepeatingTickle () override
 [AI] Per-frame update while looping/repeating over known chunks. More...
 
void DoneTickle () override
 [AI] Per-frame update for the "done" state; transitions this presenter to idle and ends the action. More...
 
MxResult StartAction (MxStreamController *, MxDSAction *) override
 [AI] Begins a new media playback action, wiring up the stream and chunk lists as needed. More...
 
void EndAction () override
 [AI] Ends the media playback action, releasing all resources, notifying listeners if necessary. More...
 
void Enable (MxBool p_enable) override
 [AI] Enables or disables media stream playback and transitions state as needed. More...
 
virtual void LoopChunk (MxStreamChunk *p_chunk)
 [AI] Adds a chunk to the looping chunk list, making it available for repeated playback. More...
 
MxStreamChunkCurrentChunk ()
 [AI] Returns a pointer to the current data chunk at the head of the stream, without consuming it. More...
 
MxStreamChunkNextChunk ()
 [AI] Returns the next data chunk in the stream, removing it from the stream queue. More...
 
- Public Member Functions inherited from MxPresenter
 MxPresenter ()
 [AI] Constructor. Initializes internal tickle state and other members. More...
 
MxResult Tickle () override
 [AI] Main tickle handler, called periodically to progress presenter's internal state. More...
 
virtual void VTable0x14 ()
 [AI] Reserved for future or specialized use in derived classes. More...
 
virtual void ReadyTickle ()
 [AI] Handles the transition and setup for the Ready state. Parses extra action data and advances state. More...
 
virtual void StartingTickle ()
 [AI] Handles actions required when first starting presentation. Advances to streaming state. More...
 
virtual void StreamingTickle ()
 [AI] Handles periodic updates during the streaming/presentation stage. Advances to repeating state. More...
 
virtual void RepeatingTickle ()
 [AI] Handles updates when in a repeating (looping) stage. Advances to freezing state. More...
 
virtual void FreezingTickle ()
 [AI] Handles updates during the freezing/suspended state. Advances to done state. More...
 
 ~MxPresenter () override
 [AI] Destructor, cleans up resources (base class: does nothing beyond Init). More...
 
virtual MxResult AddToManager ()
 [AI] Optional registration with a manager (such as TickleManager); by default does nothing. More...
 
virtual void Destroy ()
 [AI] Resets presenter state or cleans up resources after completion/removal. More...
 
virtual MxResult StartAction (MxStreamController *, MxDSAction *)
 [AI] Initiates presenter for a new action, setting up context and state. More...
 
virtual void EndAction ()
 [AI] Terminates the current action, notifies listeners and resets state. More...
 
virtual void SetTickleState (TickleState p_tickleState)
 [AI] Forces the tickle state, advancing to the requested lifecycle stage. More...
 
virtual MxBool HasTickleStatePassed (TickleState p_tickleState)
 [AI] Checks if the specified tickle state has ever been passed since last reset. More...
 
virtual MxResult PutData ()
 [AI] Allows the presenter to submit pending results or output to the engine. More...
 
virtual MxBool IsHit (MxS32 p_x, MxS32 p_y)
 [AI] Returns TRUE if the given (x, y) falls within hit-test bounds for the presenter (e.g. More...
 
virtual void Enable (MxBool p_enable)
 [AI] Enables or disables this presenter (controls action flags accordingly). More...
 
const char * ClassName () const override
 [AI] Returns the run-time class name for this presenter. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines if this object is of (or inherits) the specified named class. More...
 
MxEntityCreateEntity (const char *p_defaultName)
 [AI] Creates an entity based on action 'extra' data, or uses the provided default name. More...
 
void SendToCompositePresenter (MxOmni *p_omni)
 [AI] Notifies a composite presenter (if one exists) that this presenter wishes to join a group. More...
 
MxBool IsEnabled ()
 [AI] Returns whether this presenter is logically enabled (based on the associated action's flags). More...
 
MxS32 GetCurrentTickleState () const
 [AI] Returns the current tickle state. More...
 
MxPoint32 GetLocation () const
 [AI] Returns the presenter's screen location (in pixels). More...
 
MxS32 GetX () const
 [AI] Returns the X coordinate of screen location. More...
 
MxS32 GetY () const
 [AI] Returns the Y coordinate of screen location. More...
 
MxS32 GetDisplayZ () const
 [AI] Returns the display Z (depth) order. More...
 
MxDSActionGetAction () const
 [AI] Returns the current action being presented. More...
 
void SetAction (MxDSAction *p_action)
 [AI] Sets the action associated with this presenter. More...
 
void SetCompositePresenter (MxCompositePresenter *p_compositePresenter)
 [AI] Sets the composite presenter to notify/join on completion. More...
 
void SetDisplayZ (MxS32 p_displayZ)
 [AI] Sets the display Z (depth) order for the presenter. More...
 
- Public Member Functions inherited from MxCore
 MxCore ()
 [AI] Constructs a new MxCore object and assigns it a unique id. More...
 
virtual ~MxCore ()
 [AI] Virtual destructor. Required for correct polymorphic cleanup in derived classes. More...
 
virtual MxLong Notify (MxParam &p_param)
 [AI] Virtual callback notification mechanism. More...
 
virtual MxResult Tickle ()
 [AI] Called by tickle managers to allow the object to update itself. More...
 
virtual const char * ClassName () const
 [AI] Returns the runtime class name of this object. More...
 
virtual MxBool IsA (const char *p_name) const
 [AI] Checks whether this object's class type or parents match the given name. More...
 
MxU32 GetId ()
 [AI] Gets the unique (per-process) id assigned to this object instance. More...
 

Static Public Member Functions

static const char * HandlerClassName ()
 Returns the handler class name for this presenter. More...
 
- Static Public Member Functions inherited from MxMusicPresenter
static const char * HandlerClassName ()
 [AI] Returns the handler class name string for use in PresenterNameDispatch and dynamic class recognition. More...
 
- Static Public Member Functions inherited from MxAudioPresenter
static const char * HandlerClassName ()
 [AI] Returns the class handler name used for presenter type registration and lookup. More...
 
- Static Public Member Functions inherited from MxMediaPresenter
static const char * HandlerClassName ()
 [AI] Gets the class name string for handler dispatch and RTTI emulation. More...
 
- Static Public Member Functions inherited from MxPresenter
static const char * HandlerClassName ()
 [AI] Returns the handler class name for identification and reflection purposes. More...
 

Protected Attributes

MxStreamChunkm_chunk
 Current MIDI data chunk being streamed/played. More...
 
- Protected Attributes inherited from MxAudioPresenter
MxS32 m_volume
 [AI] Current playback volume, range 0-100 (percent). More...
 
- Protected Attributes inherited from MxMediaPresenter
MxDSSubscriberm_subscriber
 [AI] Subscriber that provides the stream data (e.g., audio/video chunks) for this presenter. More...
 
MxStreamChunkListm_loopingChunks
 [AI] Linked list of all chunks available for looping/repeating playback. More...
 
MxStreamChunkListCursorm_loopingChunkCursor
 [AI] Cursor used to iterate through the loopingChunk list during repeat mode. More...
 
MxStreamChunkm_currentChunk
 [AI] Currently active data chunk for playback or processing. More...
 
- Protected Attributes inherited from MxPresenter
TickleState m_currentTickleState
 [AI] Current state in the tickle lifecycle. More...
 
MxU32 m_previousTickleStates
 [AI] Bitfield representing all tickle states that have already occurred during this lifetime. More...
 
MxPoint32 m_location
 [AI] 2D display location for the presenter. More...
 
MxS32 m_displayZ
 [AI] Z-order value for display stacking. More...
 
MxDSActionm_action
 [AI] The associated action currently being presented by this presenter. More...
 
MxCriticalSection m_criticalSection
 [AI] Thread synchronization for presenter state and data. More...
 
MxCompositePresenterm_compositePresenter
 [AI] Owner composite presenter, if any. More...
 

Additional Inherited Members

- Public Types inherited from MxPresenter
enum  TickleState {
  e_idle = 0 , e_ready , e_starting , e_streaming ,
  e_repeating , e_freezing , e_done
}
 [AI] Represents the state of the presenter's tickle (update) lifecycle. More...
 
- Protected Member Functions inherited from MxMediaPresenter
void Init ()
 [AI] Initializes all member variables to a known default state (NULL pointers, etc). More...
 
void Destroy (MxBool p_fromDestructor)
 [AI] Frees all managed resources, owned memory and pointers, optionally preventing destruction of the base class. More...
 
- Protected Member Functions inherited from MxPresenter
virtual void DoneTickle ()
 [AI] Handles any post-completion logic, resetting to idle state. More...
 
virtual void ParseExtra ()
 [AI] Parses additional data from the associated action for configuration or world interaction. More...
 
void ProgressTickleState (TickleState p_tickleState)
 [AI] Helper for advancing the presenter's tickle state and updating transition history. More...
 
void Init ()
 [AI] Initializes object state to post-construction defaults. More...
 

Detailed Description

MIDI presenter class responsible for handling playback of MIDI music streams.

[AI]

[AI] The MxMIDIPresenter class extends MxMusicPresenter and manages the streaming, initialization, and control of MIDI music playback, using the tickle architecture to advance playback states. It interacts with a MxMusicManager to control MIDI hardware/software. It also manages the lifecycle of the streamed MIDI chunks. [AI]

Definition at line 18 of file mxmidipresenter.h.

Constructor & Destructor Documentation

◆ MxMIDIPresenter()

MxMIDIPresenter::MxMIDIPresenter ( )

Constructs an MxMIDIPresenter object and initializes its data.

[AI]

[AI] Calls Init() to initialize internal pointers and state. [AI]

Definition at line 13 of file mxmidipresenter.cpp.

◆ ~MxMIDIPresenter()

MxMIDIPresenter::~MxMIDIPresenter ( )
override

Destructor, ensures proper resource cleanup for MIDI playback.

[AI]

[AI] Calls Destroy(TRUE) for full destruction, cleaning up stream chunks and deinitializing the MIDI system. [AI]

Definition at line 19 of file mxmidipresenter.cpp.

Member Function Documentation

◆ ClassName()

const char * MxMIDIPresenter::ClassName ( ) const
overridevirtual

Returns the class name for run-time type identification.

[AI]

Returns
The handler class name string for run-time type checks. [AI]

Reimplemented from MxAudioPresenter.

◆ Destroy()

void MxMIDIPresenter::Destroy ( )
overridevirtual

Cleanup resources, free MIDI data, and deinitialize MIDI.

[AI]

[AI] Public interface for resource cleanup. [AI]

Reimplemented from MxMediaPresenter.

Definition at line 93 of file mxmidipresenter.cpp.

◆ DoneTickle()

void MxMIDIPresenter::DoneTickle ( )
overridevirtual

Tickle state signaling that playback is done.

[AI]

[AI] Ends the current action if MIDI subsystem is no longer initialized. [AI]

Reimplemented from MxMediaPresenter.

Definition at line 85 of file mxmidipresenter.cpp.

◆ EndAction()

void MxMIDIPresenter::EndAction ( )
overridevirtual

Called when playback/action is finished or needs to be ended.

[AI]

[AI] Cleans up MIDI and resets tickle state as needed. [AI]

Reimplemented from MxMediaPresenter.

Definition at line 116 of file mxmidipresenter.cpp.

◆ HandlerClassName()

static const char * MxMIDIPresenter::HandlerClassName ( )
static

Returns the handler class name for this presenter.

[AI]

Returns
Pointer to static class name string "MxMIDIPresenter". [AI]

◆ IsA()

MxBool MxMIDIPresenter::IsA ( const char *  p_name) const
overridevirtual

Checks if this instance matches a class type by name.

[AI]

Parameters
p_nameThe class name string to compare. [AI]
Returns
TRUE if p_name matches this class or a parent, FALSE otherwise. [AI]

Reimplemented from MxAudioPresenter.

◆ PutData()

MxResult MxMIDIPresenter::PutData ( )
overridevirtual

Actually provides MIDI stream data to the playback system.

[AI]

[AI] Initializes and starts playback of MIDI data if streaming and the chunk is ready. [AI] Ends the action if initialization fails. [AI]

Reimplemented from MxPresenter.

Definition at line 99 of file mxmidipresenter.cpp.

◆ ReadyTickle()

void MxMIDIPresenter::ReadyTickle ( )
overridevirtual

Tickle state for preparing the presenter before playback starts.

[AI]

[AI] Releases the next MIDI chunk if available and transitions to starting tickle. [AI]

Reimplemented from MxPresenter.

Definition at line 52 of file mxmidipresenter.cpp.

◆ SetVolume()

void MxMIDIPresenter::SetVolume ( MxS32  p_volume)
overridevirtual

Sets the playback volume for MIDI music.

[AI]

Parameters
p_volumeThe new volume multiplier value. [AI]

[AI] Updates both internal volume and notifies the music manager to use the correct multiplier. [AI]

Reimplemented from MxAudioPresenter.

Definition at line 127 of file mxmidipresenter.cpp.

◆ StartingTickle()

void MxMIDIPresenter::StartingTickle ( )
overridevirtual

Tickle state for initializing MIDI playback of the current chunk.

[AI]

[AI] Waits for the correct time and transitions to streaming tickle when ready. [AI]

Reimplemented from MxPresenter.

Definition at line 64 of file mxmidipresenter.cpp.

◆ StreamingTickle()

void MxMIDIPresenter::StreamingTickle ( )
overridevirtual

Tickle state for streaming (playing) the MIDI chunk.

[AI]

[AI] Moves to done tickle state if chunk has finished, otherwise fetches next chunk. [AI]

Reimplemented from MxMediaPresenter.

Definition at line 74 of file mxmidipresenter.cpp.

Member Data Documentation

◆ m_chunk

MxStreamChunk* MxMIDIPresenter::m_chunk
protected

Current MIDI data chunk being streamed/played.

[AI]

[AI] Set when a new MIDI chunk is obtained and cleared on playback completion or destruction. [AI]

Definition at line 139 of file mxmidipresenter.h.


The documentation for this class was generated from the following files: