721
edits
Line 35: | Line 35: | ||
# get the maximum (peak) of the signal samples seen so far (this is also called a peak hold circuit [[File:peak_hold.png|800px]] | # get the maximum (peak) of the signal samples seen so far (this is also called a peak hold circuit [[File:peak_hold.png|800px]] | ||
# multiply this maximum with a decay factor (<1) for every new sample, or sample block (envelope follower) | # multiply this maximum with a decay factor (<1) for every new sample, or sample block (envelope follower) [[File:envelope_follower.png|800px]] | ||
To get a bit more accuracy you might want to get the absolute value of our signal before tracking the maximum. | To get a bit more accuracy you might want to get the absolute value of our signal before tracking the maximum. | ||
With the help of the [https://www.pjrc.com/teensy/td_libs_AudioNewObjects.html teensy documentation] and [[:File:envelope_follower_template.zip|my empty template file]] you should be able to grasp how this works. Basically you write your own teensy audio object by including a C++ class that is structured as documented in the link above. This class will receive a pointer to the audio input stream coming from the piezo and can do some work on it. If you have questions about the template code please ask on our [https://signal.group/#CjQKIGr9R1a7Znwe1Ca0pmbx3rvHHzDaS1c_LnmgwwVk1KoSEhB6aHUiokel3vtGVoTErtfB signal group]! | With the help of the [https://www.pjrc.com/teensy/td_libs_AudioNewObjects.html teensy documentation] and [[:File:envelope_follower_template.zip|my empty template file]] you should be able to grasp how this works. Basically you write your own teensy audio object by including a C++ class that is structured as documented in the link above. This class will receive a pointer to the audio input stream coming from the piezo and can do some work on it. If you have questions about the template code please ask on our [https://signal.group/#CjQKIGr9R1a7Znwe1Ca0pmbx3rvHHzDaS1c_LnmgwwVk1KoSEhB6aHUiokel3vtGVoTErtfB signal group]! |