channel mute/solo!

This commit is contained in:
tildearrow 2021-12-18 03:25:42 -05:00
parent c4c019e593
commit b3b66ecbdb
27 changed files with 416 additions and 48 deletions

View file

@ -101,13 +101,70 @@ class DivDispatch {
* the engine shall resample to the output rate.
*/
int rate;
/**
* fill a buffer with sound data.
* @param bufL the left or mono channel buffer.
* @param bufR the right channel buffer.
* @param start the start offset.
* @param len the amount of samples to fill.
*/
virtual void acquire(short* bufL, short* bufR, size_t start, size_t len);
/**
* send a command to this dispatch.
* @param c a DivCommand.
* @return a return value which varies depending on the command.
*/
virtual int dispatch(DivCommand c);
/**
* reset the state of this dispatch.
*/
virtual void reset();
/**
* ticks this dispatch.
*/
virtual void tick();
/**
* get this dispatch's state.
* @return a pointer to the dispatch's state. must be deallocated manually!
*/
virtual void* getState();
/**
* set this dispatch's state.
* @param state a pointer to a state pertaining to this dispatch,
* or NULL if this dispatch does not support state saves.
*/
virtual void setState(void* state);
/**
* mute a channel.
* @param ch the channel to mute.
* @param mute whether to mute or unmute.
*/
virtual void muteChannel(int ch, bool mute);
/**
* test whether this dispatch outputs audio in two channels.
* @return whether it does.
*/
virtual bool isStereo();
/**
* test whether sending a key off command to a channel should reset arp too.
* @param ch the channel in question.
* @return whether it does.
*/
virtual bool keyOffAffectsArp(int ch);
/**
* set the region to PAL.
* @param pal whether to set it to PAL.
*/
virtual void setPAL(bool pal);
/**