28#ifndef GOB_SOUND_ADLIB_H
29#define GOB_SOUND_ADLIB_H
31#include "common/mutex.h"
33#include "audio/mixer.h"
44 AdLib(
int callbackFrequency);
82 kParamKeyScaleLevel = 0,
93 kParamKeyScaleRate = 11,
113 static const int kMaxVolume = 0x007F;
114 static const int kMaxPitch = 0x3FFF;
115 static const int kMidPitch = 0x2000;
129 void end(
bool killRepeat =
false);
250 bool _enableWaveSelect;
252 bool _percussionMode;
253 byte _percussionBits;
256 uint16 _pitchRangeStep;
278 void writeTremoloVibratoDepthPercMode();
279 void writeKeySplit();
282 void writeWaveSelect(uint8 oper);
283 void writeTremoloVibratoSustainingKeyScaleRateFreqMulti(uint8 oper);
284 void writeSustainRelease(uint8 oper);
285 void writeAttackDecay(uint8 oper);
286 void writeFeedbackFM(uint8 oper);
287 void writeKeyScaleLevelVolume(uint8 oper);
288 void writeAllParams(uint8 oper);
290 void initOperatorParams();
291 void initOperatorVolumes();
292 void setOperatorParams(uint8 oper,
const uint16 *params, uint8 wave);
294 void voiceOff(uint8 voice);
297 void setFreqs(uint16 *freqs, int32 num, int32 denom);
298 int32 calcFreq(int32 deltaDemiToneNum, int32 deltaDemiToneDenom);
301 void changePitch(uint8 voice, uint16 pitchBend);
303 void setFreq(uint8 voice, uint16 note,
bool on);
@ kMaxMixerVolume
Definition: mixer.h:83
void end(bool killRepeat=false)
void setRepeating(int32 repCount)
void setTimerFrequency(int timerFrequency)
static const int kOperatorsPerVoice
Number of operators per voice.
Definition: adlib.h:104
void writeOPL(byte reg, byte val)
kParam
Definition: adlib.h:81
static const int kOperatorCount
Number of operators.
Definition: adlib.h:98
void setVibratoDepth(bool vibratoDepth)
static const int kPitchStepCount
Number of pitch bend steps in a half tone.
Definition: adlib.h:100
void setPitchRange(uint8 range)
static const int kMelodyVoiceCount
Number of melody voices.
Definition: adlib.h:106
static const int kOPLMidC
A mid C for the OPL.
Definition: adlib.h:118
void bendVoicePitch(uint8 voice, uint16 pitchBend)
void setPercussionMode(bool percussion)
void noteOff(uint8 voice)
void setVoiceVolume(uint8 voice, uint8 volume)
static const int kStandardMidC
A mid C in standard MIDI.
Definition: adlib.h:117
void enableWaveSelect(bool enable)
static const int kHalfToneCount
Number of half tones in an octave.
Definition: adlib.h:102
void setVoiceTimbre(uint8 voice, const uint16 *params)
static const int kPercussionVoiceCount
Number of percussion voices.
Definition: adlib.h:107
bool isPlaying() const
Are we currently playing?
static const int kMaxVoiceCount
Max number of voices.
Definition: adlib.h:108
static const int kOctaveCount
Number of octaves we can play.
Definition: adlib.h:101
void setKeySplit(bool keySplit)
virtual uint32 pollMusic(bool first)=0
void setTremoloDepth(bool tremoloDepth)
void noteOn(uint8 voice, uint8 note)
bool isPercussionMode() const
int32 getRepeating() const
Return number of times left to loop.
static const int kNoteCount
Definition: adlib.h:111
static const int kParamCount
Number of operator parameters.
Definition: adlib.h:99