mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
f6652e9dfb
@ -929,11 +929,10 @@ void tms57002_device::sound_stream_update(sound_stream &stream, std::vector<read
|
||||
si[2] = s32(inputs[2].get(0) * in_scale) & 0xffffff;
|
||||
si[3] = s32(inputs[3].get(0) * in_scale) & 0xffffff;
|
||||
|
||||
stream_buffer::sample_t out_scale = 1.0 / (32768.0 * 65536.0);
|
||||
outputs[0].put(0, stream_buffer::sample_t(s32(so[0] << 8)) * out_scale);
|
||||
outputs[1].put(0, stream_buffer::sample_t(s32(so[1] << 8)) * out_scale);
|
||||
outputs[2].put(0, stream_buffer::sample_t(s32(so[2] << 8)) * out_scale);
|
||||
outputs[3].put(0, stream_buffer::sample_t(s32(so[3] << 8)) * out_scale);
|
||||
outputs[0].put_int(0, s32(so[0] << 8) >> 1, 32768 * 32768);
|
||||
outputs[1].put_int(0, s32(so[1] << 8) >> 1, 32768 * 32768);
|
||||
outputs[2].put_int(0, s32(so[2] << 8) >> 1, 32768 * 32768);
|
||||
outputs[3].put_int(0, s32(so[3] << 8) >> 1, 32768 * 32768);
|
||||
|
||||
sync_w(1);
|
||||
}
|
||||
|
@ -1233,7 +1233,6 @@ void aica_device::DoMasterSamples(std::vector<read_stream_view> const &inputs, w
|
||||
{
|
||||
int i;
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / stream_buffer::sample_t(32768 << SHIFT);
|
||||
for (int s = 0; s < bufl.samples(); ++s)
|
||||
{
|
||||
s32 smpl = 0, smpr = 0;
|
||||
@ -1293,8 +1292,8 @@ void aica_device::DoMasterSamples(std::vector<read_stream_view> const &inputs, w
|
||||
smpr = clip16(smpr >> 3);
|
||||
}
|
||||
|
||||
bufl.put(s, stream_buffer::sample_t(smpl * m_LPANTABLE[MVOL() << 0xd]) * sample_scale);
|
||||
bufr.put(s, stream_buffer::sample_t(smpr * m_LPANTABLE[MVOL() << 0xd]) * sample_scale);
|
||||
bufl.put_int(s, smpl * m_LPANTABLE[MVOL() << 0xd], 32768 << SHIFT);
|
||||
bufr.put_int(s, smpr * m_LPANTABLE[MVOL() << 0xd], 32768 << SHIFT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,6 @@ void asc_device::sound_stream_update(sound_stream &stream, std::vector<read_stre
|
||||
|
||||
case 1: // FIFO mode
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 64.0 / 32768.0;
|
||||
for (i = 0; i < outL.samples(); i++)
|
||||
{
|
||||
int8_t smpll, smplr;
|
||||
@ -234,15 +233,14 @@ void asc_device::sound_stream_update(sound_stream &stream, std::vector<read_stre
|
||||
break;
|
||||
}
|
||||
|
||||
outL.put(i, stream_buffer::sample_t(smpll) * sample_scale);
|
||||
outR.put(i, stream_buffer::sample_t(smplr) * sample_scale);
|
||||
outL.put_int(i, smpll, 32768 / 64);
|
||||
outR.put_int(i, smplr, 32768 / 64);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 2: // wavetable mode
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 4.0);
|
||||
for (i = 0; i < outL.samples(); i++)
|
||||
{
|
||||
int32_t mixL, mixR;
|
||||
@ -269,8 +267,8 @@ void asc_device::sound_stream_update(sound_stream &stream, std::vector<read_stre
|
||||
mixR += smpl*256;
|
||||
}
|
||||
|
||||
outL.put(i, stream_buffer::sample_t(mixL) * sample_scale);
|
||||
outR.put(i, stream_buffer::sample_t(mixR) * sample_scale);
|
||||
outL.put_int(i, mixL, 32768 * 4);
|
||||
outR.put_int(i, mixR, 32768 * 4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -93,13 +93,12 @@ void awacs_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
auto &outL = outputs[0];
|
||||
auto &outR = outputs[1];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
if (m_playback_enable)
|
||||
{
|
||||
for (int i = 0; i < outL.samples(); i++)
|
||||
{
|
||||
outL.put(i, stream_buffer::sample_t(s16(m_dma_space->read_word(offset + m_play_ptr))) * sample_scale);
|
||||
outR.put(i, stream_buffer::sample_t(s16(m_dma_space->read_word(offset + m_play_ptr + 2))) * sample_scale);
|
||||
outL.put_int(i, s16(m_dma_space->read_word(offset + m_play_ptr)), 32768);
|
||||
outR.put_int(i, s16(m_dma_space->read_word(offset + m_play_ptr + 2)), 32768);
|
||||
m_play_ptr += 4;
|
||||
}
|
||||
|
||||
|
@ -77,12 +77,6 @@ DEFINE_DEVICE_TYPE(C219, c219_device, "c219", "Namco C219")
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
static inline stream_buffer::sample_t limit(stream_buffer::sample_t in)
|
||||
{
|
||||
return std::max(-1.0f, std::min(1.0f, in));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// c140_device - constructor
|
||||
//-------------------------------------------------
|
||||
@ -326,15 +320,10 @@ void c140_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
{
|
||||
auto &dest1 = outputs[0];
|
||||
auto &dest2 = outputs[1];
|
||||
constexpr stream_buffer::sample_t sample_scale = 8.0 / 32768.0;
|
||||
for (int i = 0; i < samples; i++)
|
||||
{
|
||||
stream_buffer::sample_t val;
|
||||
|
||||
val = stream_buffer::sample_t(*lmix++) * sample_scale;
|
||||
dest1.put(i, limit(val));
|
||||
val = stream_buffer::sample_t(*rmix++) * sample_scale;
|
||||
dest2.put(i, limit(val));
|
||||
dest1.put_int_clamp(i, *lmix++, 32768 / 8);
|
||||
dest2.put_int_clamp(i, *rmix++, 32768 / 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -465,15 +454,10 @@ void c219_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
{
|
||||
auto &dest1 = outputs[0];
|
||||
auto &dest2 = outputs[1];
|
||||
constexpr stream_buffer::sample_t sample_scale = 8.0 / 32768.0;
|
||||
for (int i = 0; i < samples; i++)
|
||||
{
|
||||
stream_buffer::sample_t val;
|
||||
|
||||
val = stream_buffer::sample_t(*lmix++) * sample_scale;
|
||||
dest1.put(i, limit(val));
|
||||
val = stream_buffer::sample_t(*rmix++) * sample_scale;
|
||||
dest2.put(i, limit(val));
|
||||
dest1.put_int_clamp(i, *lmix++, 32768 / 8);
|
||||
dest2.put_int_clamp(i, *rmix++, 32768 / 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,6 @@ void c352_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
auto &buffer_rl = outputs[2];
|
||||
auto &buffer_rr = outputs[3];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int i = 0; i < buffer_fl.samples(); i++)
|
||||
{
|
||||
int out[4] = { 0, 0, 0, 0 };
|
||||
@ -174,10 +173,10 @@ void c352_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
out[3] += (((v.flags & C352_FLG_PHASEFR) ? -s : s) * v.curr_vol[3]) >> 8;
|
||||
}
|
||||
|
||||
buffer_fl.put(i, stream_buffer::sample_t(s16(out[0] >> 3)) * sample_scale);
|
||||
buffer_fr.put(i, stream_buffer::sample_t(s16(out[1] >> 3)) * sample_scale);
|
||||
buffer_rl.put(i, stream_buffer::sample_t(s16(out[2] >> 3)) * sample_scale);
|
||||
buffer_rr.put(i, stream_buffer::sample_t(s16(out[3] >> 3)) * sample_scale);
|
||||
buffer_fl.put_int(i, s16(out[0] >> 3), 32768);
|
||||
buffer_fr.put_int(i, s16(out[1] >> 3), 32768);
|
||||
buffer_rl.put_int(i, s16(out[2] >> 3), 32768);
|
||||
buffer_rr.put_int(i, s16(out[3] >> 3), 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,6 @@ void c6280_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
outputs[0].fill(0);
|
||||
outputs[1].fill(0);
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int ch = 0; ch < 6; ch++)
|
||||
{
|
||||
channel *chan = &m_channel[ch];
|
||||
@ -88,8 +87,8 @@ void c6280_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
// based on Charles MacDonald's research
|
||||
chan->noise_seed = (seed >> 1) | ((BIT(seed, 0) ^ BIT(seed, 1) ^ BIT(seed, 11) ^ BIT(seed, 12) ^ BIT(seed, 17)) << 17);
|
||||
}
|
||||
outputs[0].add(i, stream_buffer::sample_t(s16(vll * (data - 16))) * sample_scale);
|
||||
outputs[1].add(i, stream_buffer::sample_t(s16(vlr * (data - 16))) * sample_scale);
|
||||
outputs[0].add_int(i, s16(vll * (data - 16)), 32768);
|
||||
outputs[1].add_int(i, s16(vlr * (data - 16)), 32768);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -98,8 +97,8 @@ void c6280_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
/* DDA mode */
|
||||
for (int i = 0; i < outputs[0].samples(); i++)
|
||||
{
|
||||
outputs[0].add(i, stream_buffer::sample_t(s16(vll * (chan->dda - 16))) * sample_scale);
|
||||
outputs[1].add(i, stream_buffer::sample_t(s16(vlr * (chan->dda - 16))) * sample_scale);
|
||||
outputs[0].add_int(i, s16(vll * (chan->dda - 16)), 32768);
|
||||
outputs[1].add_int(i, s16(vlr * (chan->dda - 16)), 32768);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -138,8 +137,8 @@ void c6280_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
lfo_dstchan->tick = step;
|
||||
lfo_dstchan->index = (lfo_dstchan->index + 1) & 0x1f;
|
||||
}
|
||||
outputs[0].add(i, stream_buffer::sample_t(s16(vll * (data - 16))) * sample_scale);
|
||||
outputs[1].add(i, stream_buffer::sample_t(s16(vlr * (data - 16))) * sample_scale);
|
||||
outputs[0].add_int(i, s16(vll * (data - 16)), 32768);
|
||||
outputs[1].add_int(i, s16(vlr * (data - 16)), 32768);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -156,8 +155,8 @@ void c6280_device::sound_stream_update(sound_stream &stream, std::vector<read_st
|
||||
chan->tick = step;
|
||||
chan->index = (chan->index + 1) & 0x1f;
|
||||
}
|
||||
outputs[0].add(i, stream_buffer::sample_t(s16(vll * (data - 16))) * sample_scale);
|
||||
outputs[1].add(i, stream_buffer::sample_t(s16(vlr * (data - 16))) * sample_scale);
|
||||
outputs[0].add_int(i, s16(vll * (data - 16)), 32768);
|
||||
outputs[1].add_int(i, s16(vlr * (data - 16)), 32768);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -164,7 +164,6 @@ void cdda_device::get_audio_data(write_stream_view &bufL, write_stream_view &buf
|
||||
int i;
|
||||
int16_t *audio_cache = (int16_t *) m_audio_cache.get();
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int sampindex = 0; sampindex < bufL.samples(); )
|
||||
{
|
||||
/* if no file, audio not playing, audio paused, or out of disc data,
|
||||
@ -191,8 +190,8 @@ void cdda_device::get_audio_data(write_stream_view &bufL, write_stream_view &buf
|
||||
for (i = 0; i < samples; i++)
|
||||
{
|
||||
/* CD-DA data on the disc is big-endian */
|
||||
bufL.put(sampindex + i, stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
|
||||
bufR.put(sampindex + i, stream_buffer::sample_t(s16(big_endianize_int16( audio_cache[ m_audio_bptr ] ))) * sample_scale); m_audio_bptr++;
|
||||
bufL.put_int(sampindex + i, s16(big_endianize_int16( audio_cache[ m_audio_bptr ] )), 32768); m_audio_bptr++;
|
||||
bufR.put_int(sampindex + i, s16(big_endianize_int16( audio_cache[ m_audio_bptr ] )), 32768); m_audio_bptr++;
|
||||
}
|
||||
|
||||
sampindex += samples;
|
||||
|
@ -205,7 +205,6 @@ void dave_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
auto &buffer1 = outputs[0];
|
||||
auto &buffer2 = outputs[1];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (4.0 * 32768.0);
|
||||
for (int sampindex = 0; sampindex < buffer1.samples(); sampindex++)
|
||||
{
|
||||
int vol[4];
|
||||
@ -264,8 +263,8 @@ void dave_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
left_volume = output_volumes[0] + output_volumes[2] + output_volumes[4] + output_volumes[6];
|
||||
right_volume = output_volumes[1] + output_volumes[3] + output_volumes[5] + output_volumes[7];
|
||||
|
||||
buffer1.put(sampindex, stream_buffer::sample_t(left_volume) * sample_scale);
|
||||
buffer2.put(sampindex, stream_buffer::sample_t(right_volume) * sample_scale);
|
||||
buffer1.put_int(sampindex, left_volume, 32768 * 4);
|
||||
buffer2.put_int(sampindex, right_volume, 32768 * 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -548,7 +548,6 @@ void digitalker_device::sound_stream_update(sound_stream &stream, std::vector<re
|
||||
{
|
||||
auto &sout = outputs[0];
|
||||
int cpos = 0;
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
while(cpos != sout.samples()) {
|
||||
if(m_zero_count == 0 && m_dac_index == 128)
|
||||
digitalker_step();
|
||||
@ -563,10 +562,10 @@ void digitalker_device::sound_stream_update(sound_stream &stream, std::vector<re
|
||||
|
||||
} else if(m_dac_index != 128) {
|
||||
while(cpos != sout.samples() && m_dac_index != 128) {
|
||||
stream_buffer::sample_t v = stream_buffer::sample_t(m_dac[m_dac_index]) * sample_scale;
|
||||
s32 v = m_dac[m_dac_index];
|
||||
int pp = m_pitch_pos;
|
||||
while(cpos != sout.samples() && pp != m_pitch) {
|
||||
sout.put(cpos++, v);
|
||||
sout.put_int(cpos++, v, 32768);
|
||||
pp++;
|
||||
}
|
||||
if(pp == m_pitch) {
|
||||
|
@ -306,7 +306,6 @@ void es1373_device::send_audio_out(chan_info& chan, uint32_t intr_mask, write_st
|
||||
//uint32_t sample_size = calc_size(chan.format);
|
||||
// Send data to sound stream
|
||||
bool buf_row_done;
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int i=0; i<outL.samples(); i++) {
|
||||
buf_row_done = false;
|
||||
int16_t lsamp = 0, rsamp = 0;
|
||||
@ -374,8 +373,8 @@ void es1373_device::send_audio_out(chan_info& chan, uint32_t intr_mask, write_st
|
||||
chan.buf_rptr -= 0x10;
|
||||
}
|
||||
}
|
||||
outL.put(i, stream_buffer::sample_t(lsamp) * sample_scale);
|
||||
outR.put(i, stream_buffer::sample_t(rsamp) * sample_scale);
|
||||
outL.put_int(i, lsamp, 32768);
|
||||
outR.put_int(i, rsamp, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,9 +199,8 @@ void es5503_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
}
|
||||
|
||||
mixp = &m_mix_buffer[0];
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 8.0);
|
||||
for (i = 0; i < outputs[chan].samples(); i++)
|
||||
outputs[chan].put(i, stream_buffer::sample_t(*mixp++) * sample_scale);
|
||||
outputs[chan].put_int(i, *mixp++, 32768 * 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1042,9 +1042,8 @@ void es5506_device::generate_samples(std::vector<write_stream_view> &outputs)
|
||||
generate_irq(voice, v);
|
||||
}
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int c = 0; c < outputs.size(); c++)
|
||||
outputs[c].put(sampindex, stream_buffer::sample_t(cursample[c]) * sample_scale);
|
||||
outputs[c].put_int(sampindex, cursample[c], 32768);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1081,9 +1080,8 @@ void es5505_device::generate_samples(std::vector<write_stream_view> &outputs)
|
||||
generate_irq(voice, v);
|
||||
}
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int c = 0; c < outputs.size(); c++)
|
||||
outputs[c].put(sampindex, stream_buffer::sample_t(cursample[c]) * sample_scale);
|
||||
outputs[c].put_int(sampindex, cursample[c], 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,6 @@ gaelco_gae1_device::gaelco_gae1_device(const machine_config &mconfig, device_typ
|
||||
void gaelco_gae1_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
|
||||
{
|
||||
/* fill all data needed */
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int j = 0; j < outputs[0].samples(); j++)
|
||||
{
|
||||
int output_l = 0, output_r = 0;
|
||||
@ -178,8 +177,8 @@ void gaelco_gae1_device::sound_stream_update(sound_stream &stream, std::vector<r
|
||||
#endif
|
||||
|
||||
/* now that we have computed all channels, save current data to the output buffer */
|
||||
outputs[0].put(j, stream_buffer::sample_t(output_l) * sample_scale);
|
||||
outputs[1].put(j, stream_buffer::sample_t(output_r) * sample_scale);
|
||||
outputs[0].put_int(j, output_l, 32768);
|
||||
outputs[1].put_int(j, output_r, 32768);
|
||||
}
|
||||
|
||||
// if (wavraw)
|
||||
|
@ -1218,7 +1218,6 @@ void gameboy_sound_device::sound_stream_update(sound_stream &stream, std::vector
|
||||
{
|
||||
auto &outputl = outputs[0];
|
||||
auto &outputr = outputs[1];
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 / 64.0);
|
||||
for (int sampindex = 0; sampindex < outputl.samples(); sampindex++)
|
||||
{
|
||||
s32 sample;
|
||||
@ -1271,7 +1270,7 @@ void gameboy_sound_device::sound_stream_update(sound_stream &stream, std::vector
|
||||
right *= m_snd_control.vol_right;
|
||||
|
||||
/* Update the buffers */
|
||||
outputl.put(sampindex, stream_buffer::sample_t(left) * sample_scale);
|
||||
outputr.put(sampindex, stream_buffer::sample_t(right) * sample_scale);
|
||||
outputl.put_int(sampindex, left, 32768 / 64);
|
||||
outputr.put_int(sampindex, right, 32768 / 64);
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ constexpr int clamp(int val, int min, int max) { return std::min(max, std::max(m
|
||||
|
||||
void huc6230_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int i = 0; i < outputs[0].samples(); i++)
|
||||
{
|
||||
s32 samp0 = inputs[0].get(i) * 32768.0;
|
||||
@ -40,8 +39,8 @@ void huc6230_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
samp1 = clamp(samp1 + ((channel->m_output * channel->m_rvol) >> 3), -32768, 32767);
|
||||
}
|
||||
|
||||
outputs[0].put(i, stream_buffer::sample_t(samp0) * sample_scale);
|
||||
outputs[1].put(i, stream_buffer::sample_t(samp1) * sample_scale);
|
||||
outputs[0].put_int(i, samp0, 32768);
|
||||
outputs[1].put_int(i, samp1, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,6 @@ bool i5000snd_device::read_sample(int ch)
|
||||
|
||||
void i5000snd_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 16.0);
|
||||
for (int i = 0; i < outputs[0].samples(); i++)
|
||||
{
|
||||
int32_t mix_l = 0;
|
||||
@ -158,8 +157,8 @@ void i5000snd_device::sound_stream_update(sound_stream &stream, std::vector<read
|
||||
mix_l += m_channels[ch].output_l;
|
||||
}
|
||||
|
||||
outputs[0].put(i, stream_buffer::sample_t(mix_r) * sample_scale);
|
||||
outputs[1].put(i, stream_buffer::sample_t(mix_l) * sample_scale);
|
||||
outputs[0].put_int(i, mix_r, 32768 * 16);
|
||||
outputs[1].put_int(i, mix_l, 32768 * 16);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -391,7 +391,6 @@ int ics2115_device::fill_output(ics2115_voice& voice, std::vector<write_stream_v
|
||||
const u16 fine = 1 << (3*(voice.vol.incr >> 6));
|
||||
voice.vol.add = (voice.vol.incr & 0x3f)<< (10 - fine);
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * (1 << (5 + volume_bits)));
|
||||
for (int i = 0; i < outputs[0].samples(); i++)
|
||||
{
|
||||
const u32 volacc = (voice.vol.acc >> 10) & 0xffff;
|
||||
@ -411,8 +410,8 @@ int ics2115_device::fill_output(ics2115_voice& voice, std::vector<write_stream_v
|
||||
{
|
||||
/*if (voice.playing())
|
||||
{*/
|
||||
outputs[0].add(i, stream_buffer::sample_t(sample * vleft) * sample_scale);
|
||||
outputs[1].add(i, stream_buffer::sample_t(sample * vright) * sample_scale);
|
||||
outputs[0].add_int(i, (sample * vleft) >> (5 + volume_bits), 32768);
|
||||
outputs[1].add_int(i, (sample * vright) >> (5 + volume_bits), 32768);
|
||||
}
|
||||
|
||||
voice.update_ramp();
|
||||
|
@ -134,7 +134,6 @@ void iremga20_device::sound_stream_update(sound_stream &stream, std::vector<read
|
||||
auto &outL = outputs[0];
|
||||
auto &outR = outputs[1];
|
||||
|
||||
stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 4.0);
|
||||
for (int i = 0; i < outL.samples(); i++)
|
||||
{
|
||||
s32 sampleout = 0;
|
||||
@ -159,9 +158,8 @@ void iremga20_device::sound_stream_update(sound_stream &stream, std::vector<read
|
||||
}
|
||||
}
|
||||
|
||||
stream_buffer::sample_t final = stream_buffer::sample_t(sampleout) * sample_scale;
|
||||
outL.put(i, final);
|
||||
outR.put(i, final);
|
||||
outL.put_int(i, sampleout, 32768 * 4);
|
||||
outR.put_int(i, sampleout, 32768 * 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -236,7 +236,6 @@ void k007232_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
}
|
||||
}
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int j = 0; j < outputs[0].samples(); j++)
|
||||
{
|
||||
s32 lsum = 0, rsum = 0;
|
||||
@ -282,7 +281,7 @@ void k007232_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
rsum += out * vol_b;
|
||||
}
|
||||
}
|
||||
outputs[0].put(j, stream_buffer::sample_t(lsum) * sample_scale);
|
||||
outputs[1].put(j, stream_buffer::sample_t(rsum) * sample_scale);
|
||||
outputs[0].put_int(j, lsum, 32768);
|
||||
outputs[1].put_int(j, rsum, 32768);
|
||||
}
|
||||
}
|
||||
|
@ -301,14 +301,6 @@ void k053260_device::write(offs_t offset, u8 data)
|
||||
}
|
||||
}
|
||||
|
||||
static inline int limit(int val, int max, int min)
|
||||
{
|
||||
return std::max(min, std::min(max, val));
|
||||
}
|
||||
|
||||
static constexpr s32 MAXOUT = 0x7fff;
|
||||
static constexpr s32 MINOUT = -0x8000;
|
||||
|
||||
//-------------------------------------------------
|
||||
// sound_stream_update - handle a stream update
|
||||
//-------------------------------------------------
|
||||
@ -317,7 +309,6 @@ void k053260_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
{
|
||||
if (m_mode & 2)
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0f / stream_buffer::sample_t(MAXOUT);
|
||||
for ( int j = 0; j < outputs[0].samples(); j++ )
|
||||
{
|
||||
stream_sample_t buffer[2] = {0, 0};
|
||||
@ -328,8 +319,8 @@ void k053260_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
voice.play(buffer);
|
||||
}
|
||||
|
||||
outputs[0].put(j, stream_buffer::sample_t(limit( buffer[0], MAXOUT, MINOUT )) * sample_scale);
|
||||
outputs[1].put(j, stream_buffer::sample_t(limit( buffer[1], MAXOUT, MINOUT )) * sample_scale);
|
||||
outputs[0].put_int_clamp(j, buffer[0], 32768);
|
||||
outputs[1].put_int_clamp(j, buffer[1], 32768);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -124,7 +124,6 @@ void k054539_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
return;
|
||||
}
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for(int sample = 0; sample != outputs[0].samples(); sample++) {
|
||||
double lval, rval;
|
||||
if(!(flags & DISABLE_REVERB))
|
||||
@ -303,8 +302,8 @@ void k054539_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
}
|
||||
}
|
||||
reverb_pos = (reverb_pos + 1) & 0x1fff;
|
||||
outputs[0].put(sample, stream_buffer::sample_t(lval) * sample_scale);
|
||||
outputs[1].put(sample, stream_buffer::sample_t(rval) * sample_scale);
|
||||
outputs[0].put_int(sample, lval, 32768);
|
||||
outputs[1].put_int(sample, rval, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -370,7 +370,6 @@ u16 ks0164_device::uncomp_8_16(u8 value)
|
||||
|
||||
void ks0164_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 32.0);
|
||||
for(int sample = 0; sample != outputs[0].samples(); sample++) {
|
||||
s32 suml = 0, sumr = 0;
|
||||
for(int voice = 0; voice < 0x20; voice++) {
|
||||
@ -416,7 +415,7 @@ void ks0164_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
sumr += samp;
|
||||
}
|
||||
}
|
||||
outputs[0].put(sample, stream_buffer::sample_t(suml) * sample_scale);
|
||||
outputs[1].put(sample, stream_buffer::sample_t(sumr) * sample_scale);
|
||||
outputs[0].put_int(sample, suml, 32768 * 32);
|
||||
outputs[1].put_int(sample, sumr, 32768 * 32);
|
||||
}
|
||||
}
|
||||
|
@ -152,7 +152,6 @@ void l7a1045_sound_device::sound_stream_update(sound_stream &stream, std::vector
|
||||
outputs[0].fill(0);
|
||||
outputs[1].fill(0);
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 512.0);
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (m_key & (1 << i))
|
||||
@ -193,8 +192,8 @@ void l7a1045_sound_device::sound_stream_update(sound_stream &stream, std::vector
|
||||
sample = ((int8_t)(data & 0xfc)) << (3 - (data & 3));
|
||||
frac += step;
|
||||
|
||||
outputs[0].add(j, stream_buffer::sample_t(sample * vptr->l_volume) * sample_scale);
|
||||
outputs[1].add(j, stream_buffer::sample_t(sample * vptr->r_volume) * sample_scale);
|
||||
outputs[0].add_int(j, sample * vptr->l_volume, 32768 * 512);
|
||||
outputs[1].add_int(j, sample * vptr->r_volume, 32768 * 512);
|
||||
}
|
||||
|
||||
vptr->pos = pos;
|
||||
|
@ -367,17 +367,15 @@ void mas3507d_device::append_buffer(std::vector<write_stream_view> &outputs, int
|
||||
if(s1 > sample_count)
|
||||
s1 = sample_count;
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
if(mp3_info.channels == 1) {
|
||||
for(int i=0; i<s1; i++) {
|
||||
stream_buffer::sample_t v = stream_buffer::sample_t(samples[i]) * sample_scale;
|
||||
outputs[0].put(i+pos, v);
|
||||
outputs[1].put(i+pos, v);
|
||||
outputs[0].put_int(i+pos, samples[i], 32768);
|
||||
outputs[1].put_int(i+pos, samples[i], 32768);
|
||||
}
|
||||
} else {
|
||||
for(int i=0; i<s1; i++) {
|
||||
outputs[0].put(i+pos, stream_buffer::sample_t(samples[i*2]) * sample_scale);
|
||||
outputs[1].put(i+pos, stream_buffer::sample_t(samples[i*2+1]) * sample_scale);
|
||||
outputs[0].put_int(i+pos, samples[i*2], 32768);
|
||||
outputs[1].put_int(i+pos, samples[i*2+1], 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -892,7 +892,6 @@ void mos6560_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
int i, v;
|
||||
auto &buffer = outputs[0];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 8192.0;
|
||||
for (i = 0; i < buffer.samples(); i++)
|
||||
{
|
||||
v = 0;
|
||||
@ -958,6 +957,6 @@ void mos6560_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
v = 8191;
|
||||
else if (v < -8191)
|
||||
v = -8191;
|
||||
buffer.put(i, stream_buffer::sample_t(v) * sample_scale);
|
||||
buffer.put_int(i, v, 8192);
|
||||
}
|
||||
}
|
||||
|
@ -463,7 +463,6 @@ void mos7360_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
int i, v, a;
|
||||
auto &buffer = outputs[0];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (i = 0; i < buffer.samples(); i++)
|
||||
{
|
||||
v = 0;
|
||||
@ -507,7 +506,7 @@ void mos7360_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
|
||||
v = v * a;
|
||||
|
||||
buffer.put(i, stream_buffer::sample_t(v) * sample_scale);
|
||||
buffer.put_int(i, v, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -743,17 +743,16 @@ void msm5232_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
auto &bufnoise = outputs[10];
|
||||
int i;
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (i=0; i<buf1.samples(); i++)
|
||||
{
|
||||
/* calculate all voices' envelopes */
|
||||
EG_voices_advance();
|
||||
|
||||
TG_group_advance(0); /* calculate tones group 1 */
|
||||
buf1.put(i, stream_buffer::sample_t(o2) * sample_scale);
|
||||
buf2.put(i, stream_buffer::sample_t(o4) * sample_scale);
|
||||
buf3.put(i, stream_buffer::sample_t(o8) * sample_scale);
|
||||
buf4.put(i, stream_buffer::sample_t(o16) * sample_scale);
|
||||
buf1.put_int(i, o2, 32768);
|
||||
buf2.put_int(i, o4, 32768);
|
||||
buf3.put_int(i, o8, 32768);
|
||||
buf4.put_int(i, o16, 32768);
|
||||
|
||||
SAVE_SINGLE_CHANNEL(0,o2)
|
||||
SAVE_SINGLE_CHANNEL(1,o4)
|
||||
@ -761,13 +760,13 @@ void msm5232_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
SAVE_SINGLE_CHANNEL(3,o16)
|
||||
|
||||
TG_group_advance(1); /* calculate tones group 2 */
|
||||
buf5.put(i, stream_buffer::sample_t(o2) * sample_scale);
|
||||
buf6.put(i, stream_buffer::sample_t(o4) * sample_scale);
|
||||
buf7.put(i, stream_buffer::sample_t(o8) * sample_scale);
|
||||
buf8.put(i, stream_buffer::sample_t(o16) * sample_scale);
|
||||
buf5.put_int(i, o2, 32768);
|
||||
buf6.put_int(i, o4, 32768);
|
||||
buf7.put_int(i, o8, 32768);
|
||||
buf8.put_int(i, o16, 32768);
|
||||
|
||||
bufsolo1.put(i, stream_buffer::sample_t(solo8) * sample_scale);
|
||||
bufsolo2.put(i, stream_buffer::sample_t(solo16) * sample_scale);
|
||||
bufsolo1.put_int(i, solo8, 32768);
|
||||
bufsolo2.put_int(i, solo16, 32768);
|
||||
|
||||
SAVE_SINGLE_CHANNEL(4,o2)
|
||||
SAVE_SINGLE_CHANNEL(5,o4)
|
||||
|
@ -632,19 +632,6 @@ void multipcm_device::device_clock_changed()
|
||||
// 16 bits and convert to a stream_buffer::sample_t
|
||||
//-----------------------------------------------------
|
||||
|
||||
stream_buffer::sample_t multipcm_device::convert_to_stream_sample(int32_t value)
|
||||
{
|
||||
if (value < -32768)
|
||||
{
|
||||
return -1.0;
|
||||
}
|
||||
else if (value > 32767)
|
||||
{
|
||||
return 1.0;
|
||||
}
|
||||
return stream_buffer::sample_t(value) * (1.0 / 32768.0);
|
||||
}
|
||||
|
||||
#if MULTIPCM_LOG_SAMPLES
|
||||
void multipcm_device::dump_sample(slot_t &slot)
|
||||
{
|
||||
@ -734,8 +721,8 @@ void multipcm_device::sound_stream_update(sound_stream &stream, std::vector<read
|
||||
}
|
||||
}
|
||||
|
||||
outputs[0].put(i, convert_to_stream_sample(smpl));
|
||||
outputs[1].put(i, convert_to_stream_sample(smpr));
|
||||
outputs[0].put_int_clamp(i, smpl, 32768);
|
||||
outputs[1].put_int_clamp(i, smpr, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,8 +43,6 @@
|
||||
/* a position of waveform sample */
|
||||
#define WAVEFORM_POSITION(n) (((n) >> m_f_fracbits) & 0x1f)
|
||||
|
||||
static constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
|
||||
DEFINE_DEVICE_TYPE(NAMCO, namco_device, "namco", "Namco")
|
||||
DEFINE_DEVICE_TYPE(NAMCO_15XX, namco_15xx_device, "namco_15xx", "Namco 15xx")
|
||||
DEFINE_DEVICE_TYPE(NAMCO_CUS30, namco_cus30_device, "namco_cus30", "Namco CUS30")
|
||||
@ -239,7 +237,7 @@ uint32_t namco_audio_device::namco_update_one(write_stream_view &buffer, const i
|
||||
{
|
||||
for (int sampindex = 0; sampindex < buffer.samples(); sampindex++)
|
||||
{
|
||||
buffer.add(sampindex, stream_buffer::sample_t(wave[WAVEFORM_POSITION(counter)]) * sample_scale);
|
||||
buffer.add_int(sampindex, wave[WAVEFORM_POSITION(counter)], 32768);
|
||||
counter += freq;
|
||||
}
|
||||
|
||||
@ -699,13 +697,13 @@ void namco_audio_device::sound_stream_update(sound_stream &stream, std::vector<r
|
||||
|
||||
if (voice->noise_state)
|
||||
{
|
||||
lmix.add(i, stream_buffer::sample_t(l_noise_data) * sample_scale);
|
||||
rmix.add(i, stream_buffer::sample_t(r_noise_data) * sample_scale);
|
||||
lmix.add_int(i, l_noise_data, 32768);
|
||||
rmix.add_int(i, r_noise_data, 32768);
|
||||
}
|
||||
else
|
||||
{
|
||||
lmix.add(i, stream_buffer::sample_t(-l_noise_data) * sample_scale);
|
||||
rmix.add(i, stream_buffer::sample_t(-r_noise_data) * sample_scale);
|
||||
lmix.add_int(i, -l_noise_data, 32768);
|
||||
rmix.add_int(i, -r_noise_data, 32768);
|
||||
}
|
||||
|
||||
if (hold)
|
||||
@ -799,9 +797,9 @@ void namco_audio_device::sound_stream_update(sound_stream &stream, std::vector<r
|
||||
int cnt;
|
||||
|
||||
if (voice->noise_state)
|
||||
buffer.add(i, stream_buffer::sample_t(noise_data) * sample_scale);
|
||||
buffer.add_int(i, noise_data, 32768);
|
||||
else
|
||||
buffer.add(i, stream_buffer::sample_t(-noise_data) * sample_scale);
|
||||
buffer.add_int(i, -noise_data, 32768);
|
||||
|
||||
if (hold)
|
||||
{
|
||||
|
@ -151,7 +151,6 @@ void namco_163_sound_device::sound_stream_update(sound_stream &stream, std::vect
|
||||
}
|
||||
|
||||
// Slightly noisy but closer to real hardware behavior
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 128.0;
|
||||
for (int s = 0; s < outputs[0].samples(); s++)
|
||||
{
|
||||
u32 phase = (m_ram[m_reg_addr + 5] << 16) | (m_ram[m_reg_addr + 3] << 8) | m_ram[m_reg_addr + 1];
|
||||
@ -172,6 +171,6 @@ void namco_163_sound_device::sound_stream_update(sound_stream &stream, std::vect
|
||||
{
|
||||
m_reg_addr = 0x78 - ((m_ram[0x7f] & 0x70) >> 1);
|
||||
}
|
||||
outputs[0].put(s, stream_buffer::sample_t(output) * sample_scale);
|
||||
outputs[0].put_int(s, output, 128);
|
||||
}
|
||||
}
|
||||
|
@ -733,7 +733,6 @@ void nesapu_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
int accum;
|
||||
auto &output = outputs[0];
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 128.0;
|
||||
for (int sampindex = 0; sampindex < output.samples(); sampindex++)
|
||||
{
|
||||
accum = apu_square(&m_APU.squ[0]);
|
||||
@ -742,12 +741,6 @@ void nesapu_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
accum += apu_noise(&m_APU.noi);
|
||||
accum += apu_dpcm(&m_APU.dpcm);
|
||||
|
||||
/* 8-bit clamps */
|
||||
if (accum > 127)
|
||||
accum = 127;
|
||||
else if (accum < -128)
|
||||
accum = -128;
|
||||
|
||||
output.put(sampindex, stream_buffer::sample_t(accum) * sample_scale);
|
||||
output.put_int_clamp(sampindex, accum, 128);
|
||||
}
|
||||
}
|
||||
|
@ -160,11 +160,10 @@ void nile_device::sound_stream_update(sound_stream &stream, std::vector<read_str
|
||||
}
|
||||
}
|
||||
mixp = &mix[0];
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / (32768.0 * 16.0);
|
||||
for (i = 0; i < outputs[0].samples(); i++)
|
||||
{
|
||||
outputs[0].put(i, stream_buffer::sample_t(*mixp++) * sample_scale);
|
||||
outputs[1].put(i, stream_buffer::sample_t(*mixp++) * sample_scale);
|
||||
outputs[0].put_int(i, *mixp++, 32768 * 16);
|
||||
outputs[1].put_int(i, *mixp++, 32768 * 16);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -344,7 +344,6 @@ void okim6295_device::okim_voice::generate_adpcm(device_rom_interface &rom, writ
|
||||
return;
|
||||
|
||||
// loop while we still have samples to generate
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 2048.0;
|
||||
for (int sampindex = 0; sampindex < buffer.samples(); sampindex++)
|
||||
{
|
||||
// fetch the next sample byte
|
||||
@ -352,7 +351,7 @@ void okim6295_device::okim_voice::generate_adpcm(device_rom_interface &rom, writ
|
||||
|
||||
// output to the buffer, scaling by the volume
|
||||
// signal in range -2048..2047
|
||||
buffer.add(sampindex, m_adpcm.clock(nibble) * sample_scale * m_volume);
|
||||
buffer.add_int(sampindex, m_adpcm.clock(nibble) * m_volume, 2048);
|
||||
|
||||
// next!
|
||||
if (++m_sample >= m_count)
|
||||
|
@ -378,7 +378,6 @@ void sn76496_base_device::sound_stream_update(sound_stream &stream, std::vector<
|
||||
int16_t out;
|
||||
int16_t out2 = 0;
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int sampindex = 0; sampindex < lbuffer->samples(); sampindex++)
|
||||
{
|
||||
// clock chip once
|
||||
@ -445,9 +444,9 @@ void sn76496_base_device::sound_stream_update(sound_stream &stream, std::vector<
|
||||
|
||||
if (m_negate) { out = -out; out2 = -out2; }
|
||||
|
||||
lbuffer->put(sampindex, stream_buffer::sample_t(out) * sample_scale);
|
||||
lbuffer->put_int(sampindex, out, 32768);
|
||||
if (m_stereo)
|
||||
rbuffer->put(sampindex, stream_buffer::sample_t(out2) * sample_scale);
|
||||
rbuffer->put_int(sampindex, out2, 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -258,9 +258,8 @@ void sp0250_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
|
||||
if (!m_pwm_mode)
|
||||
{
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 128.0;
|
||||
for (int sampindex = 0; sampindex < output.samples(); sampindex++)
|
||||
output.put(sampindex, stream_buffer::sample_t(next()) * sample_scale);
|
||||
output.put_int(sampindex, next(), 128);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2061,7 +2061,6 @@ void tms5220_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
auto &output = outputs[0];
|
||||
|
||||
/* loop while we still have samples to generate */
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int sampindex = 0; sampindex < output.samples(); )
|
||||
{
|
||||
int length = (output.samples() > MAX_SAMPLE_CHUNK) ? MAX_SAMPLE_CHUNK : output.samples();
|
||||
@ -2069,7 +2068,7 @@ void tms5220_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
/* generate the samples and copy to the target buffer */
|
||||
process(sample_data, length);
|
||||
for (int index = 0; index < length; index++)
|
||||
output.put(sampindex++, sample_data[index] * sample_scale);
|
||||
output.put_int(sampindex++, sample_data[index], 32768);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1845,7 +1845,6 @@ void ym2151_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
return;
|
||||
}
|
||||
|
||||
constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
|
||||
for (int sampindex=0; sampindex<outputs[0].samples(); sampindex++)
|
||||
{
|
||||
advance_eg();
|
||||
@ -1864,16 +1863,8 @@ void ym2151_device::sound_stream_update(sound_stream &stream, std::vector<read_s
|
||||
outr += chanout[ch] & pan[2*ch+1];
|
||||
}
|
||||
|
||||
if (outl > 32767)
|
||||
outl = 32767;
|
||||
else if (outl < -32768)
|
||||
outl = -32768;
|
||||
if (outr > 32767)
|
||||
outr = 32767;
|
||||
else if (outr < -32768)
|
||||
outr = -32768;
|
||||
outputs[0].put(sampindex, stream_buffer::sample_t(outl) * sample_scale);
|
||||
outputs[1].put(sampindex, stream_buffer::sample_t(outr) * sample_scale);
|
||||
outputs[0].put_int_clamp(sampindex, outl, 32768);
|
||||
outputs[1].put_int_clamp(sampindex, outr, 32768);
|
||||
|
||||
advance();
|
||||
}
|
||||
|
@ -346,6 +346,7 @@ protected:
|
||||
|
||||
class write_stream_view : public read_stream_view
|
||||
{
|
||||
|
||||
public:
|
||||
// empty constructor so we can live in an array or vector
|
||||
write_stream_view()
|
||||
@ -364,7 +365,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
// safely write a gain-applied sample to the buffer
|
||||
// safely write a sample to the buffer
|
||||
void put(s32 index, sample_t sample)
|
||||
{
|
||||
sound_assert(u32(index) < samples());
|
||||
@ -374,7 +375,33 @@ public:
|
||||
m_buffer->put(index, sample);
|
||||
}
|
||||
|
||||
// safely add a gain-applied sample to the buffer
|
||||
// write a sample to the buffer, clamping to +/- the clamp value
|
||||
void put_clamp(s32 index, sample_t sample, sample_t clamp = 1.0)
|
||||
{
|
||||
if (sample > clamp)
|
||||
sample = clamp;
|
||||
if (sample < -clamp)
|
||||
sample = -clamp;
|
||||
put(index, sample);
|
||||
}
|
||||
|
||||
// write a sample to the buffer, converting from an integer with the given maximum
|
||||
void put_int(s32 index, s32 sample, s32 max)
|
||||
{
|
||||
put(index, sample_t(sample) * (1.0f / sample_t(max)));
|
||||
}
|
||||
|
||||
// write a sample to the buffer, converting from an integer with the given maximum
|
||||
void put_int_clamp(s32 index, s32 sample, s32 maxclamp)
|
||||
{
|
||||
if (sample > maxclamp)
|
||||
sample = maxclamp;
|
||||
else if (sample < -maxclamp)
|
||||
sample = -maxclamp;
|
||||
put_int(index, sample, maxclamp);
|
||||
}
|
||||
|
||||
// safely add a sample to the buffer
|
||||
void add(s32 index, sample_t sample)
|
||||
{
|
||||
sound_assert(u32(index) < samples());
|
||||
@ -384,6 +411,12 @@ public:
|
||||
m_buffer->put(index, m_buffer->get(index) + sample);
|
||||
}
|
||||
|
||||
// add a sample to the buffer, converting from an integer with the given maximum
|
||||
void add_int(s32 index, s32 sample, s32 max)
|
||||
{
|
||||
add(index, sample_t(sample) * (1.0f / sample_t(max)));
|
||||
}
|
||||
|
||||
// fill part of the view with the given value
|
||||
void fill(sample_t value, s32 start, s32 count)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user