Skip to content

Commit

Permalink
AudioDelayFeedback: constrain takes lower bounds first
Browse files Browse the repository at this point in the history
  • Loading branch information
tomcombriat committed Nov 6, 2024
1 parent 2199982 commit ae923f8
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions AudioDelayFeedback.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class AudioDelayFeedback
//int8_t feedback_sig = (int8_t) min(max(((delay_sig * _feedback_level)/128),-128),127); // feedback clipped
// this line, the whole method takes 4us... Compiler doesn't optimise pow2 divides. Why?
//int8_t feedback_sig = (int8_t) min(max(((delay_sig * _feedback_level)>>7),-128),127); // feedback clipped
su feedback_sig = (su) constrain( ((delay_sig * _feedback_level)>>7), (1<<((sizeof(su)<<3)-1))-1, -(1<<((sizeof(su)<<3)-1)));
su feedback_sig = (su) constrain( ((delay_sig * _feedback_level)>>7), -(1<<((sizeof(su)<<3)-1)), (1<<((sizeof(su)<<3)-1))-1);
delay_array[write_pos] = (return_type)input + feedback_sig; // write to buffer
//setPin13Low();
return delay_sig;
Expand Down Expand Up @@ -138,7 +138,7 @@ class AudioDelayFeedback
//int16_t delay_sig = delay_sig1 + ((int32_t)delay_sig2*fraction)>>16;

//int8_t feedback_sig = (int8_t) min(max((((int16_t)(delay_sig * _feedback_level))>>7),-128),127); // feedback clipped
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), (1<<((sizeof(su)<<3)-1))-1, -(1<<((sizeof(su)<<3)-1)));
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), -(1<<((sizeof(su)<<3)-1)), (1<<((sizeof(su)<<3)-1))-1);
delay_array[write_pos] = (return_type) input + feedback_sig; // write to buffer
//setPin13Low();
return delay_sig;
Expand Down Expand Up @@ -270,7 +270,7 @@ class AudioDelayFeedback

return_type delay_sig = delay_array[read_pos]; // read the delay buffer
//int8_t feedback_sig = (int8_t) min(max(((delay_sig * _feedback_level)/128),-128),127); // feedback clipped
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), (1<<((sizeof(su)<<3)-1))-1, -(1<<((sizeof(su)<<3)-1)));
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), -(1<<((sizeof(su)<<3)-1)), (1<<((sizeof(su)<<3)-1))-1);
delay_array[write_pos] = (return_type) in_value + feedback_sig; // write to buffer

return delay_sig;
Expand Down Expand Up @@ -315,7 +315,7 @@ class AudioDelayFeedback
delay_sig += interp;

//int8_t feedback_sig = (int8_t) min(max(((delay_sig * _feedback_level)>>7),-128),127); // feedback clipped
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), (1<<((sizeof(su)<<3)-1))-1, -(1<<((sizeof(su)<<3)-1)));
su feedback_sig = (su) constrain(((delay_sig * _feedback_level)>>7), -(1<<((sizeof(su)<<3)-1)), (1<<((sizeof(su)<<3)-1))-1);
delay_array[write_pos] = (return_type) input + feedback_sig; // write to buffer

last_in = input;
Expand Down

0 comments on commit ae923f8

Please sign in to comment.