Skip to content

Commit

Permalink
Fix IIR filter Q becoming negative (#1476)
Browse files Browse the repository at this point in the history
  • Loading branch information
derselbst authored Jan 25, 2025
1 parent 8c8f36a commit 124267d
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/rvoice/fluid_iir_filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ DECLARE_FLUID_RVOICE_FUNCTION(fluid_iir_filter_set_q)
if(iir_filter->filter_startup)
{
iir_filter->last_q = q;
iir_filter->q_incr_count = 0;
}
else
{
Expand All @@ -126,6 +127,7 @@ DECLARE_FLUID_RVOICE_FUNCTION(fluid_iir_filter_set_q)
}
iir_filter->q_incr = (q - iir_filter->last_q) / (q_incr_count);
iir_filter->q_incr_count = q_incr_count;
LOG_FILTER("%f - %f / %f = %f", q , iir_filter->last_q, q_incr_count, iir_filter->q_incr);
}
#ifdef DBG_FILTER
iir_filter->target_q = q;
Expand Down
2 changes: 1 addition & 1 deletion src/utils/fluid_conv.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ fluid_real_t
fluid_sec2tc(fluid_real_t sec)
{
fluid_real_t res;
if(sec < 0)
if(sec <= 0)
{
// would require a complex solution of fluid_tc2sec(), but this is real-only
return -32768.f;
Expand Down

0 comments on commit 124267d

Please sign in to comment.