- don't let the Timidity++ player directly access the CVARs.

This may cause problems because the player runs in a different thread than the input code.
Instead the play thread will now copy their values to local variables when it starts generating output.
This commit is contained in:
Christoph Oelckers 2018-02-24 19:36:09 +01:00
commit 8f7a503561
7 changed files with 76 additions and 30 deletions

View file

@ -183,27 +183,27 @@ void Effect::effect_left_right_delay(int32_t *buff, int32_t count)
void Effect::do_effect(int32_t *buf, int32_t count)
{
int32_t nsamples = count * 2;
int reverb_level = (timidity_reverb < 0)
? -timidity_reverb & 0x7f : DEFAULT_REVERB_SEND_LEVEL;
int reverb_level = (reverb->timidity_reverb < 0)
? -reverb->timidity_reverb & 0x7f : DEFAULT_REVERB_SEND_LEVEL;
/* for static reverb / chorus level */
if (timidity_reverb == 2 || timidity_reverb == 4
|| (timidity_reverb < 0 && !(timidity_reverb & 0x80))
if (reverb->timidity_reverb == 2 || reverb->timidity_reverb == 4
|| (reverb->timidity_reverb < 0 && !(reverb->timidity_reverb & 0x80))
|| timidity_chorus < 0)
{
reverb->set_dry_signal(buf, nsamples);
/* chorus sounds horrible
* if applied globally on top of channel chorus
*/
if (timidity_reverb == 2 || timidity_reverb == 4
|| (timidity_reverb < 0 && !(timidity_reverb & 0x80)))
if (reverb->timidity_reverb == 2 || reverb->timidity_reverb == 4
|| (reverb->timidity_reverb < 0 && !(reverb->timidity_reverb & 0x80)))
reverb->set_ch_reverb(buf, nsamples, reverb_level);
reverb->mix_dry_signal(buf, nsamples);
/* chorus sounds horrible
* if applied globally on top of channel chorus
*/
if (timidity_reverb == 2 || timidity_reverb == 4
|| (timidity_reverb < 0 && !(timidity_reverb & 0x80)))
if (reverb->timidity_reverb == 2 || reverb->timidity_reverb == 4
|| (reverb->timidity_reverb < 0 && !(reverb->timidity_reverb & 0x80)))
reverb->do_ch_reverb(buf, nsamples);
}
/* L/R Delay */