22 #ifndef MADS_PHANTOM_RSOUND_H 23 #define MADS_PHANTOM_RSOUND_H 25 #include "mads/core/sound_manager.h" 32 #define RSOUND_CHANNEL_COUNT 9 57 int _pitchBendFadeStep = 0;
58 int _volumeFadeStep = 0;
64 int _keyOnDelayOverride = 0;
66 int _volumeFadeCounter = 0;
67 int _volumeFadeReload = 0;
68 int _pitchBendFadeCounter = 0;
69 int _panFadeCounter = 0;
70 int _panFadeReload = 0;
74 int _pitchBendFadeReload = 0;
75 int _pitchBendFadeCount = 0;
76 byte *_loopStartPtr =
nullptr;
77 byte *_pSrc =
nullptr;
78 byte *_innerLoopPtr =
nullptr;
79 byte *_outerLoopPtr =
nullptr;
80 int _innerLoopCount = 0;
81 int _outerLoopCount = 0;
82 byte *_soundData =
nullptr;
83 byte *_branchTarget =
nullptr;
96 void reset(byte *startPtr);
108 void load(byte *pData);
135 byte _lastMidiStatus;
137 int _stateChangedFlag;
152 byte _heldNotes[RSOUND_CHANNEL_COUNT + 1][4];
170 byte _scriptVariables[32];
178 int _fadeCheckCounter;
194 int _clockCoarseTarget;
203 void pollAllChannels();
214 void pollActiveChannel(
Channel *channel);
220 int readScriptByte(byte *&pSrc);
228 uint16 readScriptWord(byte *&pSrc);
230 void resetAllChannels();
231 void resetChannels1to5();
238 void resetChannels4to9();
240 void checkFadingChannels();
241 void Channel_checkFade(
Channel *channel,
int midiChannel);
242 void Channel_flushHeldNotes(
Channel *channel);
247 byte *loadData(
int offset) {
248 return &_soundData[offset];
285 void resetChannelRange(
int first,
int last);
303 Channel *playSound(
int offset);
314 Channel *playSoundChannels1To5(
int offset);
322 Channel *playSoundAny(
int offset);
330 Channel *playSoundChannels5To8(
int offset);
337 Channel *playSoundChannels1To6(
int offset);
345 Channel *playSoundData(byte *pData,
int startingChannel,
int freeScanEnd,
int fallbackScanEnd);
350 bool isSoundActive(byte *pData);
352 int getRandomNumber();
357 void sendMidiByte(byte value);
358 void sendStatus(
int midiChannel, byte statusNibble);
359 void sendNoteOn(
int midiChannel,
int note,
int velocity);
360 void sendProgramChange(
int midiChannel,
int program);
361 void sendVolume(
int midiChannel,
int volume);
362 void sendVolumeCC(
int midiChannel,
int volume);
363 void resetPitchBend(
int midiChannel);
364 void sendPitchBend(
int midiChannel,
int value);
365 void sendPan(
int midiChannel,
int value);
366 void muteChannel(
int midiChannel);
373 void sendGmReset(
int count);
384 void sendSysExData(
const byte *pData);
391 void sendSysEx(
int offset);
401 void sendPatchInitSequence();
411 void sendReverbSysEx(
int mode,
int time,
int level);
420 virtual int command0();
430 void enableUpperChannels();
436 void resetAndGmResetUpperChannels();
450 virtual int command4() = 0;
451 virtual int command5() = 0;
461 Channel _channels[RSOUND_CHANNEL_COUNT];
476 int dataOffset,
int dataSize,
int sysExOffset);
486 void setVolume(
int volume)
override;
488 int getFrameCounter() {
489 return _frameCounter;
int _fadeCheckPeriod
Definition: rsound.h:274
void noise() override
Definition: rsound.h:483
void reset(byte *startPtr)
virtual void checkRandomAmbianceTrigger()
Definition: rsound.h:294
int _randomAmbianceTriggerFlag
Definition: rsound.h:263
void noOpHandler(int param)
Definition: rsound.h:417
Definition: sound_manager.h:38
Definition: anim_timer.h:27