OpenTTD Source: src/mixer.cpp File Reference

OpenTTD Source 14.0-beta3

Data Structures | Functions | Variables
mixer.cpp File Reference
`#include "stdafx.h"`
`#include <mutex>`
`#include <atomic>`
`#include "core/math_func.hpp"`
`#include "framerate_type.h"`
`#include "mixer.h"`
`#include "settings_type.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | MixerChannel

## Functions
template<typename T >
static int | RateConversion (T *b, int frac_pos)
| Perform the rate conversion between the input and output. More...
template<typename T >
static void | mix_int16 (MixerChannel *sc, int16_t *buffer, uint samples, uint8_t effect_vol)
static void | MxCloseChannel (uint8_t channel_index)
void | MxMixSamples (void *buffer, uint samples)
MixerChannel * | MxAllocateChannel ()
void | MxSetChannelRawSrc (MixerChannel *mc, int8_t *mem, size_t size, uint rate, bool is16bit)
void | MxSetChannelVolume (MixerChannel *mc, uint volume, float pan)
| Set volume and pan parameters for a sound. More...
void | MxActivateChannel (MixerChannel *mc)
uint32_t | MxSetMusicSource (MxStreamCallback music_callback)
| Set source of PCM music. More...
bool | MxInitialize (uint rate)
void | SetEffectVolume (uint8_t volume)

## Variables
static std::atomic< uint8_t > | _active_channels
static MixerChannel | _channels [8]
static uint32_t | _play_rate = 11025
static uint32_t | _max_size = UINT_MAX
static MxStreamCallback | _music_stream = nullptr
static std::mutex | _music_stream_mutex
static std::atomic< uint8_t > | _effect_vol
static const int | MAX_VOLUME = 32767
| The theoretical maximum volume for a single sound sample. More...

## Detailed Description

Mixing of sound samples.

Definition in file mixer.cpp.

## Function Documentation

## ◆ MxSetChannelVolume()

void MxSetChannelVolume | ( | MixerChannel * | mc,
|  | uint | volume,
|  | float | pan
| ) |  |

Set volume and pan parameters for a sound.

Parameters

  mc | MixerChannel to set
  volume | Volume level for sound, range is 0..16384
  pan | Pan position for sound, range is 0..1

Definition at line 191 of file mixer.cpp.

## ◆ MxSetMusicSource()

uint32_t MxSetMusicSource | ( | MxStreamCallback | music_callback | ) |

Set source of PCM music.

Parameters

  music_callback | Function that will be called to fill sample buffers with music data.

Returns
  Sample rate of mixer, which the buffers supplied to the callback must be rendered at.

Definition at line 211 of file mixer.cpp.

References lock.

Referenced by MusicDriver_FluidSynth::Start(), and MusicDriver_FluidSynth::Stop().

## ◆ RateConversion()

template<typename T >

static int RateConversion | ( | T * | b,
|  | int | frac_pos
| ) |  |
| static

Perform the rate conversion between the input and output.

Parameters

  b | the buffer to read the data from
  frac_pos | the position from the begin of the buffer till the next element

Template Parameters

  T | the size of the buffer (8 or 16 bits)

Returns
  the converted value.

Definition at line 61 of file mixer.cpp.

## Variable Documentation

## ◆ MAX_VOLUME

const int MAX_VOLUME = 32767
| static

The theoretical maximum volume for a single sound sample.

Multiple sound samples should not exceed this limit as it will sound too loud. It also stops overflowing when too many sounds are played at the same time, which causes an even worse sound quality.

Definition at line 51 of file mixer.cpp.