tested, works, decoder needs to be made adaptive or I need to figure out the exact duration of the signals that are played in order to effectively iterate over the samples