@@ -87,9 +87,6 @@ CMixer::CMixer()
8787 m_iHighDamp = 0 ;
8888 m_fOverallVol = 1 .0f ;
8989
90- m_dSumSS = 0.0 ;
91- m_dSumTND = 0.0 ;
92-
9390 m_iMeterDecayRate = DECAY_SLOW; // // // 050B
9491}
9592
@@ -191,6 +188,8 @@ float CMixer::GetAttenuation() const
191188 return Attenuation;
192189}
193190
191+ constexpr int N163_RANGE = 1200 ;
192+
194193void CMixer::UpdateSettings (int LowCut, int HighCut, int HighDamp, float OverallVol)
195194{
196195 float Volume = OverallVol * GetAttenuation ();
@@ -225,15 +224,13 @@ void CMixer::UpdateSettings(int LowCut, int HighCut, int HighDamp, float Overall
225224 SynthFDS.treble_eq (fds_eq);
226225
227226 // Volume levels
228- Synth2A03SS.volume (Volume * m_fLevelAPU1);
229- Synth2A03TND.volume (Volume * m_fLevelAPU2);
230- SynthVRC6.volume (Volume * 3 .98333f * m_fLevelVRC6);
231- SynthFDS.volume (Volume * 1 .00f * m_fLevelFDS);
232- SynthMMC5.volume (Volume * 1 .18421f * m_fLevelMMC5);
233-
234- // Not checked
235- SynthS5B.volume (Volume * m_fLevelS5B); // // // 050B
236- SynthN163.volume (Volume * 1 .1f * m_fLevelN163);
227+ Synth2A03SS.volume (Volume * m_fLevelAPU1, 500 );
228+ Synth2A03TND.volume (Volume * m_fLevelAPU2, 500 );
229+ SynthVRC6.volume (Volume * 3 .98333f * m_fLevelVRC6, 500 );
230+ SynthMMC5.volume (Volume * 1 .18421f * m_fLevelMMC5, 130 );
231+ SynthS5B.volume (Volume * m_fLevelS5B, 1600 ); // Not checked
232+ SynthFDS.volume (Volume * 1 .00f * m_fLevelFDS, 3500 );
233+ SynthN163.volume (Volume * 1 .1f * m_fLevelN163, N163_RANGE); // Not checked
237234
238235 m_iLowCut = LowCut;
239236 m_iHighCut = HighCut;
@@ -245,7 +242,7 @@ void CMixer::SetNamcoVolume(float fVol)
245242{
246243 float fVolume = fVol * m_fOverallVol * GetAttenuation ();
247244
248- SynthN163.volume (fVolume * 1 .1f * m_fLevelN163);
245+ SynthN163.volume (fVolume * 1 .1f * m_fLevelN163, N163_RANGE );
249246}
250247
251248int CMixer::GetMeterDecayRate () const // // // 050B
@@ -258,7 +255,7 @@ void CMixer::SetMeterDecayRate(int Rate) // // // 050B
258255 m_iMeterDecayRate = Rate;
259256}
260257
261- void CMixer::MixSamples (blip_sample_t *pBuffer, uint32_t Count)
258+ void CMixer::MixSamples (blip_amplitude_t *pBuffer, uint32_t Count)
262259{
263260 // For VRC7
264261 BlipBuffer.mix_samples (pBuffer, Count);
@@ -286,8 +283,9 @@ void CMixer::ClearBuffer()
286283{
287284 BlipBuffer.clear ();
288285
289- m_dSumSS = 0 ;
290- m_dSumTND = 0 ;
286+ #define X (SYNTH ) SYNTH.clear();
287+ FOREACH_SYNTH (X, );
288+ #undef X
291289}
292290
293291int CMixer::SamplesAvail () const
@@ -336,9 +334,8 @@ void CMixer::MixInternal1(int Time)
336334 double Sum = CalcPin1 (m_iChannels[CHANID_SQUARE1], m_iChannels[CHANID_SQUARE2]);
337335#endif
338336
339- double Delta = (Sum - m_dSumSS) * AMP_2A03;
340- Synth2A03SS.offset (Time, (int )Delta, &BlipBuffer);
341- m_dSumSS = Sum;
337+ double Delta = Sum * AMP_2A03;
338+ Synth2A03SS.update (Time, (int )Delta, &BlipBuffer);
342339}
343340
344341void CMixer::MixInternal2 (int Time)
@@ -350,9 +347,8 @@ void CMixer::MixInternal2(int Time)
350347 double Sum = CalcPin2 (m_iChannels[CHANID_TRIANGLE], m_iChannels[CHANID_NOISE], m_iChannels[CHANID_DPCM]);
351348#endif
352349
353- double Delta = (Sum - m_dSumTND) * AMP_2A03;
354- Synth2A03TND.offset (Time, (int )Delta, &BlipBuffer);
355- m_dSumTND = Sum;
350+ double Delta = Sum * AMP_2A03;
351+ Synth2A03TND.update (Time, (int )Delta, &BlipBuffer);
356352}
357353
358354void CMixer::MixN163 (int Value, int Time)
@@ -426,7 +422,7 @@ void CMixer::AddValue(int ChanID, int Chip, int Value, int AbsValue, int FrameCy
426422
427423int CMixer::ReadBuffer (void *Buffer)
428424{
429- return BlipBuffer.read_samples ((blip_sample_t *)Buffer, BlipBuffer.samples_avail ());
425+ return BlipBuffer.read_samples ((blip_amplitude_t *)Buffer, BlipBuffer.samples_avail ());
430426}
431427
432428int32_t CMixer::GetChanOutput (uint8_t Chan) const
@@ -475,5 +471,5 @@ void CMixer::ClearChannelLevels()
475471
476472uint32_t CMixer::ResampleDuration (uint32_t Time) const
477473{
478- return (uint32_t )BlipBuffer.resampled_duration ((blip_time_t )Time);
474+ return (uint32_t )BlipBuffer.resampled_duration ((blip_nsamp_t )Time);
479475}
0 commit comments