Classes | Public Member Functions | List of all members
openmsx::SN76489 Class Referencefinal

This class implements the Texas Instruments SN76489 sound chip. More...

#include <SN76489.hh>

Inheritance diagram for openmsx::SN76489:
Inheritance graph
Collaboration diagram for openmsx::SN76489:
Collaboration graph

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.
void reset (EmuTime::param time)
void write (byte value, EmuTime::param time)
template<typename Archive >
void serialize (Archive &ar, unsigned version)
- Public Member Functions inherited from openmsx::ResampledSoundDevice
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.
DynamicClockgetEmuClock ()
- Public Member Functions inherited from openmsx::SoundDevice
 SoundDevice (const SoundDevice &)=delete
 SoundDevice (SoundDevice &&)=delete
SoundDeviceoperator= (const SoundDevice &)=delete
SoundDeviceoperator= (SoundDevice &&)=delete
const std::string & getName () const
 Get the unique name that identifies this sound device.
std::string_view getDescription () const
 Gets a description of this sound device, to be presented to the user.
bool isStereo () const
 Is this a stereo device? This is set in the constructor and cannot be changed anymore.
AmplificationFactors getAmplificationFactor () const
void setSoftwareVolume (float volume, EmuTime::param time)
 Change the 'software volume' of this sound device.
void setSoftwareVolume (float left, float right, EmuTime::param time)
void recordChannel (unsigned channel, const Filename &filename)
void muteChannel (unsigned channel, bool muted)

Additional Inherited Members

- Public Types inherited from openmsx::ResampledSoundDevice
enum class  ResampleType { HQ , LQ , BLIP }
- Static Public Attributes inherited from openmsx::SoundDevice
static constexpr unsigned MAX_CHANNELS = 24
- Protected Member Functions inherited from openmsx::ResampledSoundDevice
 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.
bool updateBuffer (size_t length, float *buffer, EmuTime::param time) override
 Generate sample data.
void update (const Setting &setting) noexcept override
void createResampler ()
- Protected Member Functions inherited from openmsx::SoundDevice
 SoundDevice (MSXMixer &mixer, std::string_view name, static_string_view description, unsigned numChannels, unsigned inputRate, bool stereo)
 ~SoundDevice ()
virtual float getAmplificationFactorImpl () const
 Get amplification/attenuation factor for this device.
void registerSound (const DeviceConfig &config)
 Registers this sound device with the Mixer.
void unregisterSound ()
 Unregisters this sound device with the Mixer.
void updateStream (EmuTime::param time)
void setInputRate (unsigned sampleRate)
unsigned getInputRate () const
bool mixChannels (float *dataOut, size_t samples)
 Calls generateChannels() and combines the output to a single channel.
const DynamicClockgetHostSampleClock () const
 See MSXMixer::getHostSampleClock().
double getEffectiveSpeed () const
- Protected Member Functions inherited from openmsx::Observer< Setting >
 Observer ()=default
 ~Observer ()=default
 Observer (const Observer &)=delete
 Observer (Observer &&)=delete
Observeroperator= (const Observer &)=delete
Observeroperator= (Observer &&)=delete
virtual void subjectDeleted (const Setting &)
- Static Protected Member Functions inherited from openmsx::SoundDevice
static void addFill (float *&buffer, float value, unsigned num)
 Adds a number of samples that all have the same value.

Detailed Description

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 26 of file SN76489.hh.

Constructor & Destructor Documentation

◆ SN76489()

openmsx::SN76489::SN76489 ( const DeviceConfig config)

Definition at line 95 of file

References openmsx::SoundDevice::registerSound().

◆ ~SN76489()

openmsx::SN76489::~SN76489 ( )

Definition at line 109 of file

References openmsx::SoundDevice::unregisterSound().

Member Function Documentation

◆ generateChannels()

void openmsx::SN76489::generateChannels ( std::span< float * >  buffers,
unsigned  num 

Abstract method to generate the actual sound data.

buffersAn array of pointer to buffers. Each buffer must be big enough to hold 'num' samples.
numThe 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 290 of file

References xrange().

◆ reset()

void openmsx::SN76489::reset ( EmuTime::param  time)

◆ serialize()

template<typename Archive >
void openmsx::SN76489::serialize ( Archive &  ar,
unsigned  version 

Definition at line 312 of file

◆ write()

void openmsx::SN76489::write ( byte  value,
EmuTime::param  time 

Definition at line 150 of file


Referenced by openmsx::MusicalMemoryMapper::writeIO(), and openmsx::SNPSG::writeIO().

The documentation for this class was generated from the following files: