openMSX
|
This class implements the Texas Instruments SN76489 sound chip. More...
#include <SN76489.hh>
Public Member Functions | |
SN76489 (const DeviceConfig &config) | |
~SN76489 () | |
void | generateChannels (std::span< float * > buffers, unsigned num) override |
Abstract method to generate the actual sound data. More... | |
void | reset (EmuTime::param time) |
void | write (byte value, EmuTime::param time) |
template<typename Archive > | |
void | serialize (Archive &ar, unsigned version) |
![]() | |
bool | generateInput (float *buffer, size_t num) |
Note: To enable various optimizations (like SSE), this method is allowed to generate up to 3 extra sample. More... | |
DynamicClock & | getEmuClock () |
![]() | |
SoundDevice (const SoundDevice &)=delete | |
SoundDevice & | operator= (const SoundDevice &)=delete |
const std::string & | getName () const |
Get the unique name that identifies this sound device. More... | |
std::string_view | getDescription () const |
Gets a description of this sound device, to be presented to the user. More... | |
bool | isStereo () const |
Is this a stereo device? This is set in the constructor and cannot be changed anymore. More... | |
AmplificationFactors | getAmplificationFactor () const |
void | setSoftwareVolume (float volume, EmuTime::param time) |
Change the 'software volume' of this sound device. More... | |
void | setSoftwareVolume (float left, float right, EmuTime::param time) |
void | recordChannel (unsigned channel, const Filename &filename) |
void | muteChannel (unsigned channel, bool muted) |
virtual void | setOutputRate (unsigned hostSampleRate, double speed)=0 |
When a SoundDevice registers itself with the Mixer, the Mixer sets the required sampleRate through this method. More... | |
virtual bool | updateBuffer (size_t length, float *buffer, EmuTime::param time)=0 |
Generate sample data. More... | |
Additional Inherited Members | |
![]() | |
enum | ResampleType { RESAMPLE_HQ , RESAMPLE_LQ , RESAMPLE_BLIP } |
![]() | |
static constexpr unsigned | MAX_CHANNELS = 24 |
![]() | |
ResampledSoundDevice (MSXMotherBoard &motherBoard, std::string_view name, static_string_view description, unsigned channels, unsigned inputSampleRate, bool stereo) | |
~ResampledSoundDevice () | |
void | setOutputRate (unsigned hostSampleRate, double speed) override |
When a SoundDevice registers itself with the Mixer, the Mixer sets the required sampleRate through this method. More... | |
bool | updateBuffer (size_t length, float *buffer, EmuTime::param time) override |
Generate sample data. More... | |
void | update (const Setting &setting) noexcept override |
void | createResampler () |
![]() | |
SoundDevice (MSXMixer &mixer, std::string_view name, static_string_view description, unsigned numChannels, unsigned inputRate, bool stereo) | |
Constructor. More... | |
~SoundDevice () | |
virtual float | getAmplificationFactorImpl () const |
Get amplification/attenuation factor for this device. More... | |
void | registerSound (const DeviceConfig &config) |
Registers this sound device with the Mixer. More... | |
void | unregisterSound () |
Unregisters this sound device with the Mixer. More... | |
void | updateStream (EmuTime::param time) |
void | setInputRate (unsigned sampleRate) |
unsigned | getInputRate () const |
virtual void | generateChannels (std::span< float * > buffers, unsigned num)=0 |
Abstract method to generate the actual sound data. More... | |
bool | mixChannels (float *dataOut, size_t samples) |
Calls generateChannels() and combines the output to a single channel. More... | |
const DynamicClock & | getHostSampleClock () const |
See MSXMixer::getHostSampleClock(). More... | |
double | getEffectiveSpeed () const |
![]() | |
Observer ()=default | |
~Observer ()=default | |
Observer (const Observer &)=delete | |
Observer & | operator= (const Observer &)=delete |
virtual void | update (const Setting &subject) noexcept=0 |
virtual void | subjectDeleted (const Setting &) |
![]() | |
static void | addFill (float *&buffer, float value, unsigned num) |
Adds a number of samples that all have the same value. More... | |
This class implements the Texas Instruments SN76489 sound chip.
Unlike the AY-3-8910, this chip only performs sound synthesis.
Resources used:
Definition at line 25 of file SN76489.hh.
openmsx::SN76489::SN76489 | ( | const DeviceConfig & | config | ) |
Definition at line 92 of file SN76489.cc.
References Math::e, and openmsx::SoundDevice::registerSound().
openmsx::SN76489::~SN76489 | ( | ) |
Definition at line 106 of file SN76489.cc.
References openmsx::SoundDevice::unregisterSound().
|
overridevirtual |
Abstract method to generate the actual sound data.
buffers | An array of pointer to buffers. Each buffer must be big enough to hold 'num' samples. |
num | The number of samples. |
This method should fill each buffer with sound data that corresponds to one channel of the sound device. The same channel should each time be written to the same buffer (needed for record).
If a certain channel is muted it is allowed to set the buffer pointer to nullptr. This has exactly the same effect as filling the buffer completely with zeros, but it can be more efficient.
Implements openmsx::SoundDevice.
Definition at line 287 of file SN76489.cc.
References xrange().
void openmsx::SN76489::reset | ( | EmuTime::param | time | ) |
Definition at line 141 of file SN76489.cc.
References openmsx::SoundDevice::updateStream().
Referenced by openmsx::MusicalMemoryMapper::reset(), and openmsx::SNPSG::reset().
void openmsx::SN76489::serialize | ( | Archive & | ar, |
unsigned | version | ||
) |
Definition at line 309 of file SN76489.cc.
void openmsx::SN76489::write | ( | byte | value, |
EmuTime::param | time | ||
) |
Definition at line 147 of file SN76489.cc.
References UNREACHABLE.
Referenced by openmsx::MusicalMemoryMapper::writeIO(), and openmsx::SNPSG::writeIO().