node-tonegenerator icon indicating copy to clipboard operation
node-tonegenerator copied to clipboard

Add control over tone length precision

Open modest opened this issue 3 years ago • 0 comments

The current tonegenerator is inconsistent with duration; if you attempt to create 3 tones of different frequencies but the same duration, the 3 tones will have slightly different sample counts. This is undesirable when generating tones for any scenario that requires precise durations.

This PR mostly preserves the current default behavior (rounds the number of cycles to the nearest match) but introduces 2 precise modes:

  • lengthPrecision: 'padextact'
    • When needed, this will generate 1 cycle less than the target duration, but pad the remaining time with silence to precisely/consistently meet the requested duration.
  • lengthPrecision: 'clipexact'
    • This will always create tones with a precise/consistent length, but tones may be clipped in the middle of their last cycle. That can produce audio pops in some cases, but ensures that the audible tone duration is exactly as specified.

modest avatar Sep 20 '20 07:09 modest