22#ifndef MADS_CORE_PCSPK_PIT_H
23#define MADS_CORE_PCSPK_PIT_H
25#include "common/array.h"
26#include "common/scummsys.h"
40 uint32 pitClock = 1193182);
45 void writeMode3Count(uint16 count);
46 void setControl(
bool timerGate,
bool speakerEnabled);
47 int16 generateSample(
byte volume);
50 class PCSpeakerOutputStage;
53 kFractionalPhases = 32,
54 kImpulseDurationUs = 3125,
56 kCoefficientFracBits = 30
59 void initializeImpulse();
61 void addTransition(
int level, uint64 elapsedPitClocks = 0);
62 void advanceCounter(uint64 pitClockUnits);
63 bool isUndersampled(uint16 count)
const;
64 int outputLevel()
const;
70 uint64 _sampleCounter;
73 bool _hasPendingCount;
79 bool _hasUndersampledReload;
80 uint64 _lastUndersampledReloadSample;
82 uint32 _impulseLength;
86 int32 _reconstructedLevel;
88 PCSpeakerOutputStage *_outputStage;
Definition: pcspk_pit.h:37
void advanceToSampleFraction(uint32 numerator, uint32 denominator)